我在與PHP類的繼承和範圍問題作鬥爭。基本上我有一個基類,其中有許多有用的方法(創建,保存,加載),其中devs當前將table_name傳遞給。我想創建一堆模型類,它們是空的,但擴展了&繼承基類,並且可以具有調用相同名稱的方法而不是基類版本。從子類擴展一個類並訪問常量
im下面的代碼努力從模型類的靜態方法中獲取table_name,任何建議?
class Model_Baseclass {
private $table_name;
public static function create($fields) {
$table_name = //self::table_name - parent::table_name - const $table_name
if ($table_name == NULL) {
throw new exception('You must specify a table.');
}
}
}
class Model_Content_Gallery extends Model_Baseclass {
public $table_name = 'Content_Gallery';
}
$old = Model_Baseclass::create(array('table_name' => 'Content_Gallery'));
$new = Model_Content_Gallery::create(array());
當你用'self ::'引用一個類屬性時,你試圖調用一個靜態屬性。你的'private $ table_name;'不是一個靜態屬性,它是一個實例屬性。 '私人靜態$ table_name;'至少會解決這個問題,儘管我不認爲這就是你所犯的錯誤。 –