2012-01-24 13 views
2

lプロジェクトのデータベースアクセス用の軽量モデルレイヤを構築しています。 私はそれがRuby on Railsの精神にあることを望みます。新しいモデル オブジェクトをインスタンス化する代わりに、シングルトンアプローチを使用したいと思います。私が直面している現在の問題は次のとおりです。コンストラクタなしのサブクラスからのクラス変数の割り当て

class BaseModel { 
    public static $name; 
    public static function get($id) { 
     echo "SELECT * FROM ". self::$name ."s WHERE ". self::$name .' = '.$id; 
    } 
} 

class Customer extends BaseModel { 
    //parent::$name = 'customer'; => ERROR 
} 

$c = Customer::get(4); 

クラスの本体に親の静的メンバーを割り当てる方法はありますか?私は 可能な場合、実際のシングルトンクラスを作成しないようにしたいと思います。ありがとう。

答えて

2

あなたが探している機能はLSB(Late Static Binding)と呼ばれ、感謝してPHP 5.3に導入されました。ここで読むことができます:http://php.net/manual/en/language.oop5.late-static-bindings.php

これはLSBを使用して書き直されたコードです。

<?php 

class BaseModel { 
    public static $name; 
    public static function get($id) { 
     echo "SELECT * FROM ". static::$name ."s WHERE ". static::$name .' = '.$id; 
    } 
} 

class Customer extends BaseModel { 
    public static $name = 'customer'; 
} 

$c = Customer::get(4); 
?> 
+0

ありがとう、これは私が探していたものです! – JohnnyStarr

関連する問題