好,我有這樣的代碼,是我學習靜態和非靜態PHP中的調用
class scope{
function printme(){
return "hello";
}
public static function printme(){
return "hello";
}
}
$s = new scope();
echo $s->printme(); //non-static call
echo "<br>";
echo scope::printme(); //static call
現在,這是不是真的我的項目的代碼,但這些是我想要做的
的事情- 我想創建一個類將包含靜態和非靜態函數。
- 我想要一個函數在靜態和非靜態調用中都可用。
由於非靜態函數有很多操作,所以我也需要將它作爲一個靜態函數來調用,這樣我就不需要實例化這個類。這可能嗎?或者我真的需要將函數重寫爲另一個函數或類?
注:告訴我,如果我已經做了一些不好的編程。
但是,如果我使用self ::它的作用,從靜態方法調用非靜態方法。爲什麼? –
Php允許你這樣做並不意味着你應該這樣做。 self :: works是因爲你的非靜態方法不使用$ this,如果你在裏面使用$ this,它不應該工作。 – xdazz
@RNKushwaha如果你從靜態方法中調用非靜態方法,如果使用$ this的非靜態方法,'非致命錯誤:未捕獲錯誤:當不在對象上下文中時使用$ this'會發生,如果非靜態方法不使用$ this,'PHP不推薦使用:非靜態方法test :: foo()不應該靜態調用'會發生。 – xdazz