ホームページ >バックエンド開発 >PHPチュートリアル >PHP の遅延静的バインディング

PHP の遅延静的バインディング

巴扎黑
巴扎黑オリジナル
2016-11-11 17:29:421262ブラウズ

最近、あるプロジェクトでこのようなケースに遭遇しました。パフォーマンスを高めるには、すべての Model クラスがシングルトンである必要があると感じました。これは、BaseModel にシングルトンを制御するコードを追加するためです。

Java コード

/*Base class*/

class BaseModel

{

private static $instance = null

public static function instance()

{

の場合 ( empty(self::$instance)) {

空 (self::$instance)

}

}

各論理サブクラス モデル

/*商品クラス*/

class GoodModel extends BaseModel{



public function getInfoById($goodId){

using use using using return array( ( >

);

}

####################################### ######### ###########

$good = GoodModel::instance();

var_dump($good);

Java コードの場合

object(BaseModel) )#1 (0) {

}

不要なGoodModel

これは自己紹介の必要性です

self:: 呼び出される変数がこのクラスのみのものであっても、このクラスの継承変数がオーバーライドされた場合親クラスで関数 self:: を呼び出しても、呼び出された変数は上書きされた値ではなく親クラスの変数値を出力します

そのため、静的バインディングを遅らせるには static キーワードを使用する必要があります

コードは次のとおりです



Java コード

/*Base class*/

class BaseModel

{



private static $instance = null;



public static function instance()




self::$instance;

} 現時点での

$good は

Java コード

object(GoodModel)#1 (0) {

}

実際には、 get_called_class 関数上記の問題を解決するためにも使用できます。コードは次のとおりです

Java コード

class BaseModel

{

private static $instance = null; ]

オフ オフ

}

}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPのリロード次の記事:PHPのリロード