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