2

loadCodeIgniter のオブジェクトが機能する方法と同様のことをしようとしています。以下を使用して、クラス (この例ではモデル) をインスタンス化できます。

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

からモデルsome_modelにアクセスできるようになり$this->custom_nameました。これは利用していますか__set()__get()それともまったく別のものですか?

4

2 に答える 2

3

いいえ、codeigniterはゲッター/セッターを使用しません。$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 に答える