當前位置:首頁 » 編程語言 » php類靜態方法調用

php類靜態方法調用

發布時間: 2024-08-20 05:21:32

php中類靜態調用和范圍解析操作符的區別

范圍解析操作符(::)

一對冒號,用於訪問靜態成員和類常量,還可以用於訪問類中被覆蓋的屬性和方法(手冊寫的是可以用於覆蓋類中的屬性和方法,我感覺應該是我的說法更好些)

Ⅱ PHP類靜態調用的好處在哪裡 - PHP進階討論

如果類A你設置成靜態類的話,A->ma()是調用不出來的,會報錯,如果沒設置成的話
你A::ma()調用的時候系統會自動把類A設置成靜態類。。
靜態類的優勢是每用一次,只佔用一塊內存,一般來說,如果這個類你決定了,我整個PHP程序中ma()的方法里邊不傳參,ma()的方法不依賴於別的任何函數,是獨立的,那麼為了節省內存,可以用靜態類。。。
靜態類的用處並不常見,其實理解了就行。。
純手打,希望給分~

Ⅲ PHP 靜態方法怎麼調用父類非靜態方法

子類的靜態方法裡面實例化父類,然後調用父類的非靜態方法。
因為子類的靜態方法調用父類的方法需要使用parent::函數名()或有可能是self::函數名(),子類的靜態方法使用parent::函數名()或有可能是self::函數名()時這個函數名()必須是父類裡面的一個靜態方法,如果不是靜態方法,會報錯Strict Standards: Non-static method parentClass::b() should not be called statically,但是還是會有正確結果喲

Ⅳ php 使用靜態方法的幾個注意事項說明

1.即使類中的方法並未用static聲明,但其未使用到可改變的類成員變數,在外部仍可用操作符::來調用;

2.以靜態方式(用::操作符)調用的方法中$this的取值是由調用時的上下文決定的!而不是定義他的類!!

例如以下的代碼:

<?php
classTestClass1
{
public$normal_v='normal_vfromTestClass1';
publicstatic$STATIC_V='STATIC_VfromTestClass1';
publicfunctiontest_func1()
{
echo$this->normal_v.'<br/>'.self::$STATIC_V;
}
}
classTestClass2
{
public$normal_v='normal_vfromTestClass2';
publicstatic$STATIC_V='STATIC_VfromTestClass2';
publicfunctiontest_func2()
{大畝
TestClass1::test_func1();
}
}
$t2=newTestClass2();
$t2->test_func2();

這段代碼是輸出會是凳仿族什麼呢,我原以為會是normal_v from TestClass1 <br /> STATIC_V from TestClass1,測試發現其實我錯了,正確的輸出是:

normal_v from TestClass2
STATIC_V from TestClass1

說明:test_func1()雖然是在TestClass1中定義的,但卻是在棗弊TestClass2中調用的,其內部的$this變數則是由TestClass2決定的!

其實這兩個類的關系應該屬於"雙向關聯".

Ⅳ php父類如何調用子類的靜態方法或變數

php父類中怎麼調用子類的的靜態屬性了,Oh,my god,如果被面試官問道這種問題,你一定會說shit,fucky question。你會說我很少這么做,況且php對於靜態的操作太隨意了,php在父類調用子類的靜態屬性是一件麻煩的事情。我們知道子類中調用父類的靜態屬性,可以用self::的形式。但是父類調用子類如果用self::就只能調用到父類的靜態屬性。那麼,怎麼辦了?php是不是無法做到了?答案當然是否定的,php中還可以使用在父類中用子類的類名來調用的方法。
不過,這當中仍然存在一個問題,就是如果我有多個類繼承了同一個父類,而且父類的某個函數要用到各個子類的靜態屬性的話,就想當trouble了。這里有個php的朋友提供了一種思路,採用在子類中重載父類的方法使父類得到靜態屬性。父類中使用了get_class函數得到類名,get_class()是父類名,get_class($this)是子類名。好了得到這個再用eval函數做下執行語句就OK啦。例子:
//父類class A {
public function __con(){
//這里主要為讓大家看清楚,所以列印出來類名,供大家學習
echo(get_class($this)).'/';
echo(get_class()).'/';
eval(\$ab = . get_class($this) . ::\$table;);echo $ab;}}//子類Bclass B extends A {
static $table = 'b table';
function __construct(){
$this-__con();}}//子類Cclass C extends A{
static $table = 'c table';
function cc(){
$this-__con();}}//調用
new B; //輸出結果 B A b table
$c = new C;
上面就是php父類調用子類靜態成員的方法,在子類重載父類的方法還是相當不錯的 ,當時聽朋友提起這個時,就異常激動。父類我們也叫做基類,或者底層類。一般都是最先設計,子類就是根據各個需要來設計,所以我們子類修改的可能性比較大,操作靈活性也比較大。

Ⅵ PHP 靜態方法調用真的會比普通類方法快 4 倍嗎

如果類A你設置成靜態類的話,A->ma()是調用不出來的,會報錯,如果沒設置成的話
你A::ma()調用的時候系統會自動把類A設置成靜態類。。
靜態類的優勢是每用一次,只佔用一塊內存,一般來說,如果這個類你決定了,我整個PHP程序中ma()的方法里邊不傳參,ma()的方法不依賴於別的任何函數,是獨立的,那麼為了節省內存,可以用靜態類。。。
靜態類的用處並不常見,其實理解了就行。。
純手打,希望給分~

Ⅶ php直接用類名調用靜態方法會不會觸發類的構造函數

調用類的靜態函數時不會自動調用類的構造函數。
測試方法,在各個函數里分別寫上下面的代碼 echo __LINE__,__FILE__,'<br>';
根據輸出的內容,就知道調用順序了。

Ⅷ php直接用類名調用靜態方法會不會觸發類的構造函數

調用靜態方法與觸發類的構造函數沒有必然關系。但是靜態方法可以實例化類本身,這時候會觸發構造函數,而且可以傳參數。如:
classclassname{
privatefunction__construct($a){
$this->a=$a;
exit($this->a);//列印一下
}

publicstaticfunctionstaticfun($a){
newself($a);
}
}

//usecaseasfollow:
$a='測試123';
classname::staticfun($a);

Ⅸ php 靜態方法為什麼不能調用this

static關鍵字聲明一個屬性或方法是和類相關的,而不是和類的某個特定的實例相關,因此,這類屬性或方法也稱為「類屬性」或「類方法」。
2. 靜態變數的調用方法:只能使用slef:: 或者 類名:: 訪問,不能使用$this訪問;反之,類的成員變數未聲明為const及static時,只能使用$this訪問,不能用::訪問。

熱點內容
資料庫日誌文件查看 發布:2024-11-25 12:17:28 瀏覽:47
騰訊視頻明明緩存了看不了 發布:2024-11-25 12:08:01 瀏覽:181
存儲區域網路分布 發布:2024-11-25 12:07:12 瀏覽:388
安卓怎麼用湯不熱 發布:2024-11-25 11:49:06 瀏覽:843
java線程調用 發布:2024-11-25 11:42:45 瀏覽:844
識地圖演算法 發布:2024-11-25 11:31:10 瀏覽:20
楊輝三角c語言程序一維數組 發布:2024-11-25 11:30:30 瀏覽:214
腳本一般用在什麼地方 發布:2024-11-25 11:13:28 瀏覽:824
php上傳xls 發布:2024-11-25 11:01:46 瀏覽:679
formphp 發布:2024-11-25 11:01:45 瀏覽:554