㈠ 在php開發中什麼時候使用static,什麼時候不使用 也就是什麼時候該將類或方法靜態化,什麼時候不能。
恆哥,不好意思!我說一下,不對之處還請指正!不能用static修飾class吧!我只用過靜態變數,靜態成員方法!靜態成員方法一般在該方法不屬於某個特定的類實例時使用,即直接屬於某個類,靜態成員方法相當於一個全局函數!以前看書說類和對象在內存中儲存方式上得知,靜態方法不存在於儲存對象的堆棧中,而是保存在定義類的堆棧中,說明在對象中你「找不到」靜態方法的!但是PHP也能直接通過對象的方式調用靜態的方法,只不過PHP在內部處理了這種調用!但是類的靜態成員變數是不能直接通用對象的方式來調用的。
㈡ PHP中靜態方法和實例化方法的區別
當用::
使用方法是被認為該方法為靜態方法,
靜態方法中不允許使用$this,
因為靜態方法的調用不需要實例化,
而$this是實例化後才出現的,
所以靜態方法類似於一個普通的函數
靜態方法
是加栽到內存.而且還少了
NEW
的內存空間.速度相對快一點效率好點。
㈢ php 一般什麼時候用靜態方法
1. 即使類中的方法並未用static聲明,但其未使用到可改變的類成員變數,在外部仍可用操作符::來調用;
2. 以靜態方式(用::操作符)調用的方法中$this的取值是由調用時的上下文決定的!而不是定義他的類!!
㈣ 什麼時候該使用PHP的static屬性和方法
static在使用上,有兩種基本模式:
function test() {
static $prop;
}
class Test {
public static $prop;
}
function裡面的static,更像是function的一個私有屬性。function的static,只在該function內可見,對外是無法訪問到的。
類static,就不用解釋了。一個Class,在未實例化時,只存在靜態方法和靜態屬性。Class的static,是可被外部訪問的(私有或保護屬性,可通過介面訪問)。
static賦值,等號右邊只能賦值靜態常量、數組結構、字元串、數字。
function test() {
static $prop1 = [];
static $prop2 = PHP_SAPI;
static $prop3 = 'prop3';
static $prop4 = empty($_SERVER['HTTP_HOST']); // 錯誤
static $prop5 = $_SERVER['HTTP_HOST']; // 也錯誤
}
㈤ php什麼情況下使用函數的靜態變數
說那些不清不楚沒用的,不如我舉個例子給你看就明白了
/**普通局部變數*/
functionlocal(){
$loc=0;//這樣,如果直接不給初值0是錯誤的。
++$loc;
echo$loc.'<br>';
}
local();//1
local();//1
local();//1
---------------------------------------------------------
/**static靜態局部變數*/
functionstatic_local(){
static$local=0;//此處可以不賦0值
$local++;
echo$local.'<br>';
}
static_local();//1
static_local();//2
static_local();//3
//現在知道靜態變數和普通變數的區別了吧?
㈥ PHP面向對象的靜態方法具體什麼時候用
靜態變數,沒有什麼特定的情況。就像public一樣,只不過調用方法不一樣。一個是$this->變數名,一個是self::變數名
㈦ php什麼時候用靜態方法
靜態方法就是隸屬於一個類的函數,為什麼希望讓這個函數隸屬於類,
㈧ PHP靜態方法和非靜態方法的區別
靜態方法必須使用static關鍵字聲明,面向對象編程中我們通常通過類的實例(而不是類的本身)來調用類,類其實是對象的模板,但是靜態方法區別於普通類,它不僅可以通過類的實例來調用,還可以通過類來訪問他們,比如 Game::getGame(); 使用類調用的時候使用::,在當前類調用還可以使用self關鍵字,比如 self::getGame(); 靜態方法是以類為作用域,不能訪問類中的普通屬性,因為他們屬於一個對象,但可以訪問靜態屬性。不知道你明白了沒有