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

php靜態方法調用靜態方法

發布時間: 2023-09-09 02:38:18

A. php中::代表什麼意思

php中的::是調用類中的靜態方法或者常量,屬性的符號
例如
class aaa{
static function ar(){

}

function br(){}
}

使用非靜態方法,要先創建實例
$obj = new aaa();
$obj -> br();

使用靜態方法,無需創建實例,直接使用類名
aaa::ar();

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

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

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

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

C. php文件怎樣調用class.php中的方法

調用方法,得看該方法是 靜態方法 還是 非靜態方法
如果類里定義的該方法帶有 static 關鍵字,那麼就是靜態方法
調用靜態方法很簡單,直接 類名::方法名 即可,例如:Person::study();
調用非靜態方法,得先用該類實例化出一個對象,然後才能用對象調用非靜態方法,例如:
$a=new class(); $a->study();

當然不管怎麼調用,如果調用的文件和定義類的文件不是同一個文件,那麼都得在調用的文件里先包含類文件,才能調用方法,包含文件用 include 或 require 後跟字元串文件路徑

D. 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父類調用子類靜態成員的方法,在子類重載父類的方法還是相當不錯的 ,當時聽朋友提起這個時,就異常激動。父類我們也叫做基類,或者底層類。一般都是最先設計,子類就是根據各個需要來設計,所以我們子類修改的可能性比較大,操作靈活性也比較大。

E. php中怎麼調用方法中的靜態變數

看看下面的實例:
<?php
function Test()
{
$w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>

本函數每次調用時都會將 $w3sky 的值設為 0 並輸出 "0"。將變數加一的 $w3sky++ 沒有其到效果,因為一旦退出本函數則變數 $w3sky 就不存在了。
要寫一個不會丟失本次計數值的計數函數,要將變數 $w3sky 定義為靜態(static)的:
如下:
<?php
function Test()
{
static $w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>

F. 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決定的!

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

熱點內容
怎麼搞網盤安卓 發布:2025-03-12 07:40:01 瀏覽:988
c語言函數的返回值類型 發布:2025-03-12 07:39:16 瀏覽:731
腋窩體溫演算法 發布:2025-03-12 07:39:14 瀏覽:838
淘寶的直接訪問是什麼意思 發布:2025-03-12 07:38:30 瀏覽:108
文件夾設置打開密碼 發布:2025-03-12 07:34:14 瀏覽:816
java操作ftp 發布:2025-03-12 07:17:40 瀏覽:19
時間差演算法 發布:2025-03-12 07:16:58 瀏覽:657
方塊式編程 發布:2025-03-12 07:10:06 瀏覽:27
850w電源能搭配什麼配置 發布:2025-03-12 07:01:18 瀏覽:400
qq如何查看密碼是什麼格式 發布:2025-03-12 07:00:32 瀏覽:401