[英]php - calling static function from a extended class
我無法設法從擴展類中調用靜態函數(帶有常量)。 這是我的代碼:
(1st file)
class A
{
function isXSet()
{
return X;
}
public static function setX()
{
define('X', 1);
}
}
(second file)
include('/*first file*/');
class B extends A
{
A::setX();
}
我該怎么做呢?
您的代碼在這里
class B extends A
{
A::setX();
}
有點不對勁。 您沒有將調用放入方法內部。
class B extends A
{
public static function doSomething() {
A::setX();
}
}
實際上,這不是通過父子關系來做任何事情。 實際上,在定義class A
,對A::setX()
的調用可以在任何地方發生,因為它是公共的和靜態的。 這段代碼同樣有效:
class A
{
function isXSet()
{
return X;
}
public static function setX()
{
define('X', 1);
}
}
class B { // No extending!
function isXSet() {
return A::isXSet();
}
}
您更可能尋找的是parent
:
class A
{
public function isXSet()
{
return X;
}
protected static function setX()
{
define('X', 1);
}
}
class B extends A
{
public static function doSomething() {
parent::setX();
var_dump( parent::isXSet() ); // int(1)
}
}
這里的一大優點是擴展類可以從parent
類訪問受保護的方法和屬性。 這意味着你可以從能夠調用保持每個人A::setX()
除非是被調用的一個實例或孩子A
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.