loadCodeIgniter のオブジェクトが機能する方法と同様のことをしようとしています。以下を使用して、クラス (この例ではモデル) をインスタンス化できます。
$this->load->model('some_model', 'custom_name')
からモデルsome_modelにアクセスできるようになり$this->custom_nameました。これは利用していますか__set()、__get()それともまったく別のものですか?
loadCodeIgniter のオブジェクトが機能する方法と同様のことをしようとしています。以下を使用して、クラス (この例ではモデル) をインスタンス化できます。
$this->load->model('some_model', 'custom_name')
からモデルsome_modelにアクセスできるようになり$this->custom_nameました。これは利用していますか__set()、__get()それともまったく別のものですか?
いいえ、codeigniterはゲッター/セッターを使用しません。$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);