ホームページ >バックエンド開発 >PHPチュートリアル >初期化の実装方法について
クラス a、b、base があり、 a と b の両方が base を継承するとします。
new N 回の場合:
$obj = new a();
$obj = new a();
$obj = new b();
$obj = new b(); a->initialize(); と b->initialize();
initialize は主にフレームワークの __construct メソッドを置き換えます。
Phalcon はこの機能を実装していますが、Phalcon は C で書かれたフレームワークです。純粋な PHP でこの効果を実現できますか?
ディスカッションに返信(解決策)
class bass { function __construct() { $this->_initialize(); } function _initialize() { static $v; @$v++; if($v == 1 && method_exists($this, 'initialize')) $this->initialize(); }}class a extends bass { function initialize() { echo __CLASS__; }}class b extends bass { function initialize() { echo __CLASS__; }}$obj = new a();$obj = new a();$obj = new a();$obj = new b();$obj = new b();$obj = new b();ab
class bass { function __construct() { $this->_initialize(); } function _initialize() { static $v; @$v++; if($v == 1 && method_exists($this, 'initialize')) $this->initialize(); }}class a extends bass { function initialize() { echo __CLASS__; }}class b extends bass { function initialize() { echo __CLASS__; }}$obj = new a();$obj = new a();$obj = new a();$obj = new b();$obj = new b();$obj = new b();ab
@$ v ++;
なぜこの文に「@」を追加する必要があるのか聞いてもいいですか? ?