Ⅰ php class中public,private,protected,static
1. public:許可權是最大的,可以內部調用,實例調用
2. protected: 受保護類型,用於本類和繼承類調用
常用場景在許可權設置
有需要用到許可權的Class,只要繼承Base這個Class即可用到登錄驗證。執行Login的時候會先運行Base裡面的方法
3. private: 私有類型,只有在本類中使用。
4. static: 一般是在傳值的時候使用,表示值不會被修改,默認為public,可用::訪問
Ⅱ 關於php當中static關鍵字,資料上說只能初始化一次。但是數組變數在定義時賦值會被下一次初始化覆蓋!
你定義了static 就是靜態變數
但是靜態變數的初始化只進行一次,而且是定義靜態變數的時候初始化
static $a = array(1,2,3);
print_r($a);
static $a = array();
這樣實際上是定義了兩次靜態變數,並初始化,實際做會執行其中一個
就是後面這個
上面的代碼實際上會被編譯器編程這樣
<?php
function f1(){
static $a = array();
print_r($a);
print_r($a);
}
function f2(){
static $a = array();
$a[] = 1;
$a[] = 2;
$a[] = 3;
print_r($a);
print_r($a);
}
Ⅲ php中static 靜態變數和普通變數的區別
php中static 靜態變數和普通變數的區別:
在變數的前面加上static 就構成了靜態變數(static 變數)。
static變數和普通變數的區別在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。 而靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。
Ⅳ php static 方法有什麼好處
靜態方法不需要所在類被實例化就可以直接使用。
靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。
靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。
Ⅳ php怎麼理解這些個關鍵字啊,public;private;protect;final;static;const;我感覺這
public: 公有屬性或方法
在子類中可以通過self::var 或self::method 來調用,可以通過parent::method來調用父類中的方法,但不能調用公有屬性.
在實例中可以通過$obj->var或self::method 來調用
protected: 受保護類型
在子類中可以通過self::var 或self::method調用,可以通過parent::method來調用父類中的方法
在實例中不能通過$obj->var 來調用 protected類型的方法或屬性
private: 私有類型
該類型的屬性或方法只能在該類中使用,在該類的實例、子類中、子類的實例中都不能調用私有類型的屬性和方法
再來說說final
1.final不能用來修飾成員屬性
2.final只能修飾類和方法
作用:被修飾的類不能被子類所繼承;被修飾的方法不能被子類的方法覆蓋。
然後來說說static
1.static用來修飾成員屬性和成員方法,但不能用來修飾類
2.用static修飾的成員屬性可以被同一個類的所有對象共享
3.靜態的數據是存在 內存中的 數據段中(初始化靜態段)
4.靜態的數據是在類在第一次載入時,分配到內存中的
5.什麼是類被載入?只要在程序中使用到這個類(有這個類名出現)
6.靜態的成員屬性都要用類名去訪問,不用創建對象,不用對象去訪問;在類里邊可以用self代表本類($this)
7.靜態方法,不能訪問非靜態的成員屬性(但是,在非靜態方法卻能訪問靜態的成員屬性),非靜態的成員屬性,必須用對象訪問,在內部訪問非靜態成員屬性,用$this.
8.如果你確定一個方法中不需使用到非靜態的成員屬性,則可以將這個方法聲明為靜態方法,不需實例化對象,就可以訪問
最後來說說const
1.它只能用來修飾成員屬性
2.在類中聲明常量必須使用const
3.訪問方式和訪問靜態成員屬性一樣(類外使用 類名::成員屬性,類里邊則使用self::成員屬性)
4.常量一定要在聲明的時候就給初始值
Ⅵ php 中class static public var 都定義什麼什麼
static 一旦聲明為靜態變數,在編譯時刻開始永遠存在,不受作用域范圍約束,而且展一定內存
public 公共的誰都可以調用。
var 跟public 一樣。var是老版本php的寫法。
<?php
class a{
var $abc="ABC";
}
$b=new a;
$c=$b;
echo $b->abc;//這里輸出ABC
echo $c->abc;//這里輸出ABC $b->abc="DEF";
echo $c->abc;//這里輸出DEF
?>
這個就是php $b引用類a的方法的變數。
引用方法是 類名:: 方法名。好了200分拿出來吧