PHP の遅延静的バインディング
最近のプロジェクトでそのようなケースに遭遇しましたが、パフォーマンスを上げるためにはすべての Model クラスがシングルトンである必要があると感じました。すべてのモデルが統合された親クラスの BaseModel を継承するため、コードにコントロール シングルトンが追加されます。簡単なデモンストレーションは次のとおりです:
/*基类*/class BaseModel{ private static $instance = null; public static function instance() { if (empty(self::$instance)) { self::$instance = new self(); } return self::$instance; }}
/*商品类*/class GoodModel extends BaseModel{ public function getInfoById($goodId){ return array( 'id'=>$goodId, 'name'=>'小苹果', 'logo'=>'http://t3.qlogo.cn/mbloghead/65518bb9e5287fcd5864/180' ); }}################################################################$good = GoodModel::instance();var_dump($good);
object(BaseModel)#1 (0) {}
/*基类*/class BaseModel{ private static $instance = null; public static function instance() { if (empty(self::$instance)) { self::$instance = new static(); } return self::$instance; }}
object(GoodModel)#1 (0) {}