05 2012 档案

摘要:1. __construct()和__destruct() 在实例被 创建/销毁 的时候被调用,都可以传递0个或多个参数。 class A { function A() { echo "build A"; } function __destruct() { echo "destroy A"; } } $obj = new A(); //unset($obj); Note:The destructor method will be called as soon as there are no other references... 阅读全文
posted @ 2012-05-19 14:30 hi_bazinga 阅读(1642) 评论(0) 推荐(1) 编辑
摘要:在一个web应用中,可能有多个地方需要进行验证。比如“注册"时username、email、password这三项必须要填写,但是在“找回密码”时,可能只有email需要。所以,在Yii框架中,如果将这三项都设置为"required"那肯定是不可取的。 最好的解决办法莫过于建立不同的验证场景,通过"on"将一个场景与相应的规则相关联。来看一个User Model中rules()的例子:public function rules() { return array( //Set required fields //Applies to 'r 阅读全文
posted @ 2012-05-18 14:05 hi_bazinga 阅读(783) 评论(0) 推荐(0) 编辑
摘要:【Yii】Authentication (1)中讨论了Yii进行身份验证的流程,并且实现了通过数据库中的用户信息来进行验证的功能。这一篇将讨论如何实现更复杂的验证例程,涉及邮箱验证、不同的用户角色等等。 在默认情况下,Yii使用cookies来保存用户信息。在大多数情况下是没有问题的,但是如果涉及到一些敏感信息,则须使用sessions。例如用户的ID或role,如果被cookies保存到客户端,那么用户可以很容易地修改,比如把role的值从“user”改成“admin”,那么本来的普通用户现在就能拥有管理员的权限,这必然是不能被接受的。 所以,我们首先把cookies的功能禁用。通过... 阅读全文
posted @ 2012-05-18 13:24 hi_bazinga 阅读(2373) 评论(0) 推荐(1) 编辑
摘要:大多数网站都有身份验证系统,用户必须登录才能发表文章、评论内容甚至管理网站等等。无论如何,在用户进行任何操作前对其身份的检验是必须的。Yii框架自动生成的网站中使用内嵌的验证程序,下面三个文件会自动生成,用来管理验证: LoginForm.php定义相应的规则和行为login.php即登录时的form本身,UserIdentity.php定义了执行实际验证功能的model。当然,protected/controllers/SiteController.php中的部分代码使得action可以执行,即controller。 UserIdentity.php中是身份验证的核心内容,默认的代码... 阅读全文
posted @ 2012-05-17 15:52 hi_bazinga 阅读(2724) 评论(0) 推荐(0) 编辑
摘要:在Yii为Model生成的Controller中,有一个accessRules()方法,用来限制谁可以做什么。这是涉及一个web应用的安全性的重要部分。比如有些删除和更新操作只能由管理员来完成,普通用户没有操作的权限等等,这些都需要通过accessRules()来设置。 这是Yii默认生成的代码:public function accessRules(){ return array( array('allow', // allow all users to perform 'list' and 'show' actions 'action 阅读全文
posted @ 2012-05-15 20:37 hi_bazinga 阅读(1502) 评论(1) 推荐(0) 编辑
摘要:Wikipedia:Lazy loading is a design pattern commonly used in computer programming to defer initialization of an object until the point at which it is needed. It can contribute to efficiency in the program's operation if properly and appropriately used. The opposite of lazy loading is eager loadin 阅读全文
posted @ 2012-05-14 18:27 hi_bazinga 阅读(1113) 评论(0) 推荐(0) 编辑
摘要:转自 http://www.cnblogs.com/mrcoke/articles/2407771.htmlYiiBase类为YII框架的运行提供了公共的基础功能:别名管理与对象创建管理。 在创建一个php的对象时,需要先include这个类的定义文件,然后再new这个对象。在不同环境下(开发环境/测试环境/线上环境),apache 的webroot路径的配置可能不一样,所以这个类的定义文件的全路径就会不同,Yii框架通过YiiBase的别名管理来解决了这个问题。 在创建对象时,需要导入对应类的定义,经常需要使用这5个函数:include()、include_once()、requi... 阅读全文
posted @ 2012-05-10 16:54 hi_bazinga 阅读(864) 评论(0) 推荐(0) 编辑
摘要:call_user_func函数类似于一种特别的调用函数的方法,使用方法如下: function a($b,$c) { echo $b; echo $c; } call_user_func('a', "111","222"); call_user_func('a', "333","444"); //显示 111 222 333 444 ?> 调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的: class a { func 阅读全文
posted @ 2012-05-10 16:37 hi_bazinga 阅读(236) 评论(0) 推荐(0) 编辑
摘要:今天开始阅读Yii的源码,想深入了解一下Yii的工作原理,同时学习一下优秀的编码规范和风格。在次记录一下阅读中的小心得。就从Yii自动生成的网站入口开始吧。index.php 整个网站的入口,主要对一些路径和参数的配置,并启动web应用。1$yii=dirname(__FILE__).'/../yii/framework/yii.php';2$config=dirname(__FILE__).'/protected/config/main.php';34defined('YII_DEBUG')ordefine('YII_DEBUG' 阅读全文
posted @ 2012-05-10 11:40 hi_bazinga 阅读(3028) 评论(0) 推荐(1) 编辑
摘要:今天在php manual book中看到一段关于图像生成的代码,想运行试试,结果发现显示不出。看了看代码:1header('Content-type:image/png');2$filename=sprintf("%d.png",time());3ImagePNG($image,$filename);4ImageDestroy($image);56printf("<imgsrc='%s'>",$filename);第6行是显示已生成图片的语句,没有错误,看了目录下也生成的图片也确实存在,开始有些疑惑。后来发现 阅读全文
posted @ 2012-05-09 21:41 hi_bazinga 阅读(330) 评论(0) 推荐(0) 编辑