我認爲這是非常基本的功能,請大家幫忙。 如何在PHP中將靜態方法調用非靜態方法。從靜態方法調用非靜態方法
class Country {
public function getCountries() {
return 'countries';
}
public static function countriesDropdown() {
$this->getCountries();
}
}
我認爲這是非常基本的功能,請大家幫忙。 如何在PHP中將靜態方法調用非靜態方法。從靜態方法調用非靜態方法
class Country {
public function getCountries() {
return 'countries';
}
public static function countriesDropdown() {
$this->getCountries();
}
}
這是更好地使getCountries()
方法靜態代替。
<?php
class Country {
public static function getCountries() {
return 'countries';
}
public static function countriesDropdown() {
return self::getCountries();
}
}
$c = new Country();
echo $c::countriesDropdown(); //"prints" countries
添加self
關鍵字顯示PHP嚴格標準的通知要避免你可以創建非常相同的類的對象實例,並調用與它相關的方法。
<?php
class Country {
public function getCountries() {
return 'countries';
}
public static function countriesDropdown() {
$c = new Country();
return $c->getCountries();
}
}
$c = new Country();
echo $c::countriesDropdown(); //"prints" countries
是的,你是對的,但有一個警告嚴格的標準:非靜態方法國家:: getCountries()不應該靜態調用 – zarpio
對不起,我不在了..爲了避免你可以創建一個實例內的靜態函數同班同學。 –
@zarpio,我只是想知道爲什麼不讓getCountries()方法變成靜態的呢?所以你沒有經歷所有這些障礙;) –
你甚至可以使用Class Name
public static function countriesDropdown() {
echo Country::getCountries();
}
是的,你是對的,但有警告嚴格的標準:非靜態方法國家:: getCountries()不應該靜態調用 – zarpio
你不能簡單的做了,你需要創建類&有一個實例撥打非靜電方式,
class Country {
public function getCountries() {
return 'countries';
}
public static function countriesDropdown() {
$country = new Country();
return $country->getCountries();
}
}
DEMO。
但是,爲什麼'getCountries'也不是一個靜態方法,因爲它根本不使用'$ this'? – SirDarius