假設我有一個一流的汽車---強制類屬性的子類
class Car{
var $type;
function func1(){
}
function func2(){
}
}
現在誰正在擴大這一點,我希望他們都類發起$類型。他們必須這樣做 -
class Taxi extends class Car{
var $type = 'taxi';
}
我該如何做到這一點?抽象類 - 抽象變量?
假設我有一個一流的汽車---強制類屬性的子類
class Car{
var $type;
function func1(){
}
function func2(){
}
}
現在誰正在擴大這一點,我希望他們都類發起$類型。他們必須這樣做 -
class Taxi extends class Car{
var $type = 'taxi';
}
我該如何做到這一點?抽象類 - 抽象變量?
首先關閉所有你有語法錯誤,你不能使用var聲明屬性,你有語法錯誤在聲明類出租車應該是
class Taxi extends Car{
public $type;
}
我想你想實現這樣的事情。
abstract class AbstractCar
{
public $type;
public function __construct()
{
$this->type = static::TYPE;
}
}
class Taxi extends AbstractCar
{
//const TYPE = 'foobar';
}
$car = new Car; //Fatal Error: Undefined class constant 'TYPE' (uncomment const TYPE = 'foobar';)
echo $car->type;
做到這一點的唯一方法是使final
構造內的檢查:
abstract class Car { public $type; final public function __construct() { if (! isset($this->type)) { throw new RuntimeException( sprintf('%s::$type is undefined', __CLASS__) ); } } }
這個類應該是抽象的是自然的,因爲它顯然已經被擴展,但在其他方面ISN沒有必要。
我正在找這個。謝謝:) – Alice
但反正public $ type ='taxi';是不是給我任何錯誤,它工作正常 – Alice
是的,它應該是空的,一秒鐘我會編輯我的答案。 –