viqecel 发表于 2012-7-28 18:03:07

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");
    }

elementwater 发表于 2012-7-28 19:51:13

如 $class = Test
new $class() 相当于 new Test(),实例化一个类
$this指代当前类的实例

viqecel 发表于 2012-7-28 20:48:40

本帖最后由 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 为系统保留字吗 即这样定义.意味着他是类或是其它什么特定含义的东西

elementwater 发表于 2012-7-28 21:25:47

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:44:32

本帖最后由 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消失了.呵.写法真是怪.

yunnysunny 发表于 2012-7-29 08:43:13

这显然是调用类的构造函数,类名是$class,这个类有一个构造函数参数为$this对象所属的类的类型。

viqecel 发表于 2012-7-29 11:57:19

yunnysunny 发表于 2012-7-29 08:43 static/image/common/back.gif
这显然是调用类的构造函数,类名是$class,这个类有一个构造函数参数为$this对象所属的类的类型。 ...

$this对象所属的类的类型是什么?呵.不懂

yunnysunny 发表于 2012-7-30 08:31:24

viqecel 发表于 2012-7-29 11:57 static/image/common/back.gif
$this对象所属的类的类型是什么?呵.不懂

就是构造函数所属的那个类

mihubird 发表于 2012-9-30 14:13:44

$class 是从哪里传值过来的?
页: [1]
查看完整版本: new $class($this) 这种是什么用法