2

我希望做一些类似于 CodeIgniterload对象工作方式的事情。您可以使用以下方法实例化一个类,在此示例中为模型:

$this->load->model('some_model', 'custom_name')

该模型some_model现在可以通过 访问$this->custom_name。这是否利用了__set()或者__get()是完全不同的东西?

4

2 回答 2

3

不,codeigniter 不使用 getter/setter。假设$this在上下文中可用:

$dynamic_class_name    = 'some_model';
$dynamic_property_name = 'custom_name';

$this->$dynamic_property_name = new $dynamic_class_name;

大功告成,实例化时还可以传递动态构造函数参数。

于 2012-09-27T01:44:29.637 回答
0

您也可以使用反射类。

http://php.net/manual/en/class.reflectionclass.php

<?php

    $reflection = new ReflectionClass($class_name);
    $this->$class_name = $reflection->newInstanceArgs($params);
于 2012-09-27T01:54:39.963 回答