new $class($this) 这种是什么用法
这个函数中$this代表什么. $class() 代表什么.$class() 与$class这个变量有什么区别.谢谢.public function __construct() {
/** 获取CI句柄 **/
$this->_CI = & get_instance();
$plugins = $this->_CI->utility->get_active_plugins();//所有可用插件列表 从数据库中或缓存中 返回数组
if($plugins && is_array($plugins))
{
foreach($plugins as $plugin)
{
$plugin_dir = $plugin['directory'] . '/' . ucfirst($plugin['directory']) . '.php';//数组中有内容 ucfirst() 函数把字符串中的首字符转换为大写。
$path = FCPATH . ST_PLUGINS_DIR . '/' . $plugin_dir;
/** 仅能识别"插件目录/插件/插件.php"目录下的插件 */
if (preg_match("/^[\w\-\/]+\.php$/", $plugin_dir) && file_exists($path))
{
include_once($path);//这个函数的目的就是把相关的插件文件引用到具体的控制器中
$class = ucfirst($plugin['directory']);
if (class_exists($class))
{
/** 初始化插件 */
new $class($this);//this是什么
}
}
}
}
log_message('debug', "STBLOG: Plugins Libraries Class Initialized");
}
如 $class = Test
new $class() 相当于 new Test(),实例化一个类
$this指代当前类的实例 本帖最后由 viqecel 于 2012-7-28 20:58 编辑
elementwater 发表于 2012-7-28 19:51 static/image/common/back.gif
如 $class = Test
new $class() 相当于 new Test(),实例化一个类
$this指代当前类的实例 ...
$class 为系统保留字吗 即这样定义.意味着他是类或是其它什么特定含义的东西 viqecel 发表于 2012-7-28 20:48 static/image/common/back.gif
$class 为系统保留字吗 即这样定义.意味着他是类或是其它什么特定含义的东西 ...
非保留字,其实就是一个变量,new $a(), new $b()……,这些都可以,前提是该函数已经定义过,即通过class_exists($class)来判断,没有特殊含义,只是php的一个特性 本帖最后由 viqecel 于 2012-7-28 23:49 编辑
elementwater 发表于 2012-7-28 21:25 static/image/common/back.gif
非保留字,其实就是一个变量,new $a(), new $b()……,这些都可以,前提是该函数已经定义过,即通过clas ...
这里应该是动态实例化吧,$class自动被替换为"test"等等具体的类.只是这个$this运行后,变成了空.他应该是代表对自身的实例化的一个动作,而不代表一个具体的值吧,即
new $class($this);循环运行后,比如其中一个变成了new test();
$this消失了.呵.写法真是怪. 这显然是调用类的构造函数,类名是$class,这个类有一个构造函数参数为$this对象所属的类的类型。 yunnysunny 发表于 2012-7-29 08:43 static/image/common/back.gif
这显然是调用类的构造函数,类名是$class,这个类有一个构造函数参数为$this对象所属的类的类型。 ...
$this对象所属的类的类型是什么?呵.不懂 viqecel 发表于 2012-7-29 11:57 static/image/common/back.gif
$this对象所属的类的类型是什么?呵.不懂
就是构造函数所属的那个类 $class 是从哪里传值过来的?
页:
[1]