[OK]をので、私持って正常に動作するよう、次のコードの設定:php classes - 既存のオブジェクト内に "module"オブジェクトをロードするにはどうすればいいですか?
ユーザーハンドラ「モジュールを」:
class user_handler
{
private $dbo;
public function __construct($dbo)
{
$this->dbo = $dbo;
}
public function user_table_method()
{
$this->dbo->generic_db_method();
}
}
接続クラス:
class connection
{
private $dbc;
public $user;
public function __construct()
{
$this->dbc = 'connection';
$this->user = new user_handler($this);
}
public function generic_db_method()
{
echo '<p>doing stuff with ' . $this->dbc . '</p>';
}
}
がそれから私がアクセスできるユーザー・ハンドラそのような方法:
$dbc = new connection();
$dbc->user->user_table_method();
私の質問はこれです
connection
クラスのメソッドでは、_user
オブジェクトは必要なときにのみ作成できますか?
私は何の考えていることはそうのように使用される方法です:
:ゼロからuser
と呼ばれる新しいパブリックプロパティを作成し、新しい
user_handler
オブジェクトとして設定します
$dbc->add_handle('user', 'user_handler');
$dbc = new connection();
$dbc->add_handle('user', 'user_handler');
$dbc->user->user_table_method();
:それを設定するための新しい方法は次のようになります..so
// in more detail
public function add_handle($name, $module)
{
if(!isset($this->/*somehow use $name*/))
{
$this->/*somehow use $name*/ = new /*somehow use $module*/();
}
}
ありがとうございます!私が述べたように
$dbc = new connection();
$name = 'user';
$module = 'somemodule';
$dbc->add_handle($name, $module);
$dbc->user->user_table_method();
は私も$ユーザに$の_userからそれを名前を変更しました:そして、あなたはどのように考えていたのに似てやるだけです
パブリック変数またはメソッドをアンダースコアで開始しないでください。それは混乱しています。 – Mike
まあ、私はPHPの初心者ですので、混乱の笑いを許してください、何がそんなに混乱させるように私に教えてください。 :) –
アンダースコアで始まる名前を付けるメソッドまたはプロパティは、一般にプライベートメソッドまたはプロパティであり、publicではありません。明快さのためにhttp://pear.php.net/manual/en/standards.naming.php – Mike