动态/编程创建类属性

时间:2012-09-27 01:36:07

标签: php oop codeigniter

我希望做一些类似CodeIgniter的load对象工作的方法。您可以使用:

实例化一个类,在本例中是一个模型

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

现在可以通过some_model访问模型$this->custom_name。这会使用__set()__get()还是完全不同?

2 个答案:

答案 0 :(得分:3)

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

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

$this->$dynamic_property_name = new $dynamic_class_name;

你已经完成了,你也可以在实例化时传递动态构造函数参数。

答案 1 :(得分:0)

您也可以使用反射类。

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

<?php

    $reflection = new ReflectionClass($class_name);
    $this->$class_name = $reflection->newInstanceArgs($params);