スレッド表示 | フラット表示〕 全トピック 923 件中 205 番目 次≫ ≪前

クラス内でのコールバック関数

created: 2006-08-15 12:15 | modified: 2006-08-16 10:37 | reply: 4

[3230] $this のコピー渡しとリファレンス渡し

user: ゆうじ | created: 2006-08-15 23:23
変数でもオブジェクトでも、
コピー渡しとリファレンス渡しの差異は同じです。
$this も、自分自身を指し示しているオブジェクトと
考えるといいのではないでしょうか。


かなり省いてますが、以下のコードは、
MVCのフロントコントローラのつもりです。

controller::getAction() の中で生成した、
action->controller の初期化に、
$this をリファレンス渡ししています。

controllerオブジェクトのプロパティやメソッドを
actionオブジェクトの中で参照できるよう、
controllerオブジェクト側で初期化してるわけですが、
ここを、コピー渡し(=)にすると、
コピーで初期化されるので、actionオブジェクトごとに、
違ったcontrollerオブジェクトを参照することになります。

より現実的なものをと考えてみましたが、
適切な例題が思い浮かばびませんでした。
参考になりますでしょうか。

class controller
{
var $config;
var $user;
var $request;

function controller ()
{
$this->config = array(
'home_url' => 'http://localhost/php/'
);
$this->request = new request();
$this->user = new user();
}

//
// 省略
//

function execute ()
{
$actionName = $this->request->get('action');
$action =& $this->getAction($actionName. '_action');
$action->execute();
}

function & getAction ( $className )
{
require_once $className. '.class.php';
$action = new $className;
// $action->controller = $this; // copy
$action->controller =& $this; // ref
return $action;
}

//
// 省略
//

}
Parent: 3229  reply: 3232 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 205 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑