初期化の実装方法について

WBOY
リリース: 2016-06-23 13:19:24
オリジナル
1194 人が閲覧しました

クラス 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 ++;

なぜこの文に「@」を追加する必要があるのか​​聞いてもいいですか? ?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート