此消息顯示在PHP 5.4抽象。嚴格的標準:靜態函數模型:: tableStruct()不應該爲一些奇怪的原因是
我的類看起來是這樣的:
abstract class model{
private static
$tableStruct = array();
abstract protected static function tableStruct();
public static function foo(){
if(!isset(self::$tableStruct[get_called_class()]))
self::$tableStruct[get_called_class()] = static::tableStruct();
// I'm using it here!!
}
}
,應該使用這樣的:
class page extends model{
protected static function tableStruct(){
return array(
'id' => ...
'title' => ...
);
}
...
}
使得由子類需要一個靜態方法,爲什麼被認爲是對標準?
這不只是5.4,它已經這樣了一段時間。見[類似問題](http://stackoverflow.com/questions/999066/why-does-php-5-2-disallow-abstract-static-class-methods)。 –