1. php 類中的static有什麼作用
new關鍵字是用於實例化一個類
語法為
$class
=
new
classname();
static關鍵字是用於定義類中靜態的屬性或方法,靜態屬性或方法可以不需要實例化就可以直接使用,例如:
?php
class
test
{
static
function
show(){
echo
'hello
world';
}
}
//可以直接使用,不需要實例化
test::show();
//輸出hello
world
?
2. php靜態屬性跟常量有什麼區別啊
類的靜態屬性. 會在類文件載入的時候, 就初始化.
屬性值是可以更改的.
常量...一旦定義了. 就無法變更值..
這應該算是最大區別.
另外, 常量只能是簡單的數據類型(如: int , string , boolean,float , double) ,
類的靜態屬性, 可以是php所支持的任意變數類型(但初始化的時候. 只能是簡單數據類型, 數組)
3. php 中設置靜態屬性的意義是什麼
靜態和公共、受保護、私有這3種屬性格式沒有關系, 他們並不是並列的
公共、受保護、私有同樣可以設置為靜態
如:
publicstatic$a;
privatestatic$b;
靜態屬性的基本作用, 就是與普通的屬性不同的是, 靜態屬性會記住之前的值, 舉例說明:
functiona(){
$a=1;
$a+=1;
echo$a;
}
//然後連續3次調用這個函數測試下
a();
a();
a();
上面代碼會輸出 2 2 2
改成靜態屬性:
functiona(){
static$a=1;
$a+=1;
echo$a;
}
//然後連續3次調用這個函數測試下
a();
a();
a();
以上會輸出 2 3 4
具體什麼情況下會用到, 看程序開發的具體需求!
4. php面向對象 靜態屬性為什麼能用對象訪問
Static關鍵字
聲明類成員或方法為static,就可以不實例化類而直接訪問。不能通過一個對象來訪問其中的靜態成員(靜態方法除外)。
由於靜態方法不需要通過對象即可調用,所以偽變數$this在靜態方法中不可用。
靜態屬性不可以由對象通過->操作符來訪問。
用::方式調用一個非靜態方法會導致一個E_STRICT級別的錯誤。
就像其它所有的PHP靜態變數一樣,靜態屬性只能被初始化為一個字元值或一個常量,不能使用表達式。 所以你可以把靜態屬性初始化為整型或數組,但不能指向另一個變數或函數返回值,也不能指向一個對象。
--------以上為php手冊 原文
5. PHP類的靜態(static)方法和靜態(static)變數使用介紹
在php中,訪問類的方法/變數有兩種方法:
1.
創建對象$object
=
new
Class(),然後使用」->」調用:$object->attribute/function,前提是該變數/方法可訪問。
2.
直接調用類方法/變數:class::attribute/function,無論是靜態/非靜態都可以。但是有前提條件:
A.
如果是變數,需要該變數可訪問。
B.
如果是方法,除了該方法可訪問外,還需要滿足:
b1)
如果是靜態方法,沒有特殊條件;
b2)
如果是非靜態方法,需要改方法中沒有使用$this,即沒有調用非靜態的變數/方法,當然,調用靜態的變數/方法沒有問題。
然後我們再看一下使用$object->…
和使用class::…
都有什麼區別:
1.
使用$object->…
,需要執行構造函數創建對象;
2.
使用class::…
調用靜態方法/變數,不需要執行構造函數創建對象;
3.
使用class::…
調用非靜態方法/變數,也不需要執行構造函數創建對象。
然後奇怪的地方就出來了,既然2和3都一樣,那靜態方法/變數存在還有什麼意義呢?
差異還是顯然存在的,如下:
1.
靜態變數
靜態成員只保留一個變數值,而這個變數值對所有的實例都是有效,也就是說,所有的實例共享這個成員。
2.
靜態方法
靜態方法可以直接使用class::…
來調用,而非靜態方法需要滿足一定限制條件才能使用class::..
的方法調用,如之前所述
6. 關於php的靜態屬性
:一般說道靜態屬性是指類的靜態成員屬性,用static修飾,雖然名義上是靜態的,但是在類中仍然是可以通過成員方法更改它的值。類中的成員方法通過self::訪問靜態屬性而不是通過$this-> 靜態常量,一般用const修飾,定義的可以不用寫$符號
7. PHP中的靜態類是怎麼實現的啊
首先:類不可以標注static,也就是說沒有「靜態類「!
所謂"靜態類"指的是:類中含有靜態的成員、方法是用static標注的。寫法例如:
<?php
classMath
{
publicstaticfunctionceil($value)
{
returnceil($value);
}
publicstaticfunctionfloor($value)
{
returnfloor($value);
}
}
?>
另外類種的靜態方法無需實例化成對象即可使用哦,實例化會報錯哦;
8. php靜態屬性和常量的區別,求教
介面:
1 不能夠定義靜態變數在類的 成員變數(常量除外)
2 定義的常量 const YOUCONST = VALUE,不能在子類中覆蓋,在子類中以 interfaceName::YOUCONST的方式調用
3 不能使用parent::YOUCONST的方式調用介面的常量
類:
1 const 變數可以使用parent::YOUCONST的方式,className::YOUCONST的方式在子類中訪問
2 const定義的變數,在子類中可以被覆蓋
3 當然在類中可以定義靜態成員變數了
9. php 在類中怎麼定義靜態變數
<?php
class testClass
{
static $staticvar='hello php';
function getValue(){
return self::$staticvar;
}
}