我希望做一些类似于 CodeIgniterload
对象工作方式的事情。您可以使用以下方法实例化一个类,在此示例中为模型:
$this->load->model('some_model', 'custom_name')
该模型some_model
现在可以通过 访问$this->custom_name
。这是否利用了__set()
或者__get()
是完全不同的东西?
我希望做一些类似于 CodeIgniterload
对象工作方式的事情。您可以使用以下方法实例化一个类,在此示例中为模型:
$this->load->model('some_model', 'custom_name')
该模型some_model
现在可以通过 访问$this->custom_name
。这是否利用了__set()
或者__get()
是完全不同的东西?
不,codeigniter 不使用 getter/setter。假设$this
在上下文中可用:
$dynamic_class_name = 'some_model';
$dynamic_property_name = 'custom_name';
$this->$dynamic_property_name = new $dynamic_class_name;
大功告成,实例化时还可以传递动态构造函数参数。
您也可以使用反射类。
http://php.net/manual/en/class.reflectionclass.php
<?php
$reflection = new ReflectionClass($class_name);
$this->$class_name = $reflection->newInstanceArgs($params);