由于php基础知识不扎实,没有全面的了解函数的意义,通过阅读yii框架,学习记录每天的收获,以便于加深自己的记忆。
2014年4月28日
realpath(path)-->realpath(‘protected’)-->E;/wnmp/www/book/protected
dirname($_SERVER['SCRIPT_FILENAME'])与dirname(__FILE__)的区别 前者是正在执行的脚本的目录 后者是写有此变量的文件所在的目录
抽象类中没有抽象方法,为什么还要定义成为抽象类,这样做的好处是什么?---》这个需要思考,并深入的去了解。--多态,扩展,不能实例化等等有云,需要留给自己思考。
网友的回答:http://bbs.csdn.net/topics/290057815
我以为回答比较好的如下:
2014年4月30日
yii社区高手的源码分析:
http://www.yiiframework.com/forum/index.php?/topic/5457-%E5%89%8D%E4%B8%80%E9%98%B5%E5%86%99%E7%9A%84yii%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/
1、spl_autoload_register()函数
spl_autoload_register(array("Yiibase",'autoload'))---将YiiBase类的静态方法autoload 注册为类加载器。 PHP autoload 的简单原理就是执行 new 创建对象或通过类名访问静态成员时,系统将类名传递给被注册的类加载器函数,类加载器函数根据类名自行找到对应的类文件并include 。
2、http://www.docin.com/p-320674127.html&uid=26577911?bsh_bid=147181997
2014年5月4日
1、yii框架的目录
|-framework 框架核心库
|--base 底层类库文件夹,包含CApplication(应用类,负责全局的用户请求处理,它管理的应用组件集,将提供特定功能给整个应用程序),CComponent(组件类,该文件包含了基于组件和事件驱动编程的基础类,从版本1.1.0开始,一个行为的属性(或者它的公共成员变量或它通过getter和/或setter方法??定义的属性)可以通过组件的访问来调用),CBehavior(行为类,主要负责声明事件和相应事件处理程序的方法、将对象的行为附加到组件等等),CModel(模型类,为所有的数据模型提供的基类),CModule(是模块和应用程序的基类,主要负责应用组件和子模块)等等
|--caching 所有缓存方法,其中包含了Memcache缓存,APC缓存,数据缓存,CDummyCache虚拟缓存,CEAcceleratorCache缓存等等各种缓存方法
|--cli YII项目生成脚本
|--collections 用php语言构造传统OO语言的数据存储单元。如:队列,栈,哈希表等等
|--console YII控制台
|--db 数据库操作类
|--gii YII 代码生成器(脚手架),能生成包括模型,控制器,视图等代码
|--i18n YII 多语言,提供了各种语言的本地化数据,信息、文件的翻译服务、本地化日期和时间格式,数字等
|--logging 日志组件,YII提供了灵活和可扩展的日志记录功能。消息记录可分为根据日志级别和信息类别。应用层次和类别过滤器,可进一步选择的消息路由到不同的目的地,例如文件,电子邮件,浏览器窗口,等等|--messages 提示信息的多语言
|--test YII提供的测试,包括单元测试和功能测试
|--utils 提供了常用的格式化方法
|--validators 提供了各种验证方法
|--vendors 这个文件夹包括第三方由Yii框架使用的资料库
|--views 提供了YII错误、日志、配置文件的多语言视图
|--web YII所有开发应用的方法
|---actions 控制器操作类
|---auth 权限认识类,包括身份认证,访问控制过滤,基本角色的访问控制等
|---filters 过滤器,可被配置在控制器动作执行之前或之后执行。例如, 访问控制过滤器将被执行以确保在执行请求的动作之前用户已通过身份验证;性能过滤器可用于测量控制器执行所用的时间
|---form 表单生成方法
|---helpers 视图助手,包含GOOGLE AJAX API,创建HTML,JSON,JAVASCRIPT相关功能
|---js JS库
|---renderers 视图渲染组件
|---services 封装SoapServer并提供了一个基于WSDL的Web服务
|---widgets 部件
|---CArrayDataProvider.php 可以配置的排序和分页属性自定义排序和分页的行为
|---CActiveDataProvider.php ActiveRecord方法类
|---CController.php 控制器方法,主要负责协调模型和视图之间的交互
|---CPagination.php 分页类
|---CUploadedFile.php 上传文件类
|---CUrlManager.php URL管理
|---CWebModule.php 应用模块管理,应用程序模块可被视为一个独立的子应用
等等方法
|--.htaccess 重定向文件
|--yii.php 引导文件
|--YiiBase.php YiiBase类最主要的功能是注册了自动加载类方法,加载框架要用到所有接口。
|--yiic Yii LINUX 命令行脚本
|--yiic.bat YII WINDOW 命令行脚本
|--yiilite.php 它是一些常用到的 Yii 类文件的合并文件。在文件中,注释和跟踪语句都被去除。因此,使用 yiilite.php 将减少被引用的文件数量并避免执行跟踪语句
2、参考链接http://www.cnblogs.com/bluecobra/archive/2011/11/30/2269207.html
2014年5月5日
1、extract函数
函数抽取数组键名作为变量名
input
数组中的数字或者字符串的键名。
参数 ¶
-
一个数组,包含了要返回的键。
-
如果指定了这个参数,只有包含这些值的键才会返回。
-
判断在搜索的时候是否该使用严格的比较(===)。
input
search_value
strict
返回值 ¶
返回 input
里的所有键。
更新日志 ¶
版本 | 说明 |
---|---|
5.0.0 | 增加了 strict 参数。 |
范例 ¶
Example #1 array_keys() 例子
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
print_r(array_keys($array));
?>
以上例程会输出:
Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size )
object
according to scope.
<?php
class foo {
private $a;
public $b = 1;
public $c;
private $d;
static $e;
public function test() {
var_dump(get_object_vars($this));
}
}
$test = new foo;
var_dump(get_object_vars($test));
$test->test();
?>
The above example will output:
array(2) { ["b"]=> int(1) ["c"]=> NULL } array(4) { ["a"]=> NULL ["b"]=> int(1) ["c"]=> NULL ["d"]=> NULL }