導航:首頁 > 編程語言 > php調用static方法

php調用static方法

發布時間:2024-11-27 08:50:28

1. php static 方法有什麼好處

  1. 靜態方法不需要所在類被實例化就可以直接使用。

  2. 靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。

  3. 靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。

2. 使用thinkphp寫代碼,public/static/js/1.js內怎樣引用public/static/img/bs/2.jpg圖片文件 以下代碼不行

TP5引入靜態文件方法大致如下:

  1. 直接寫/static/img/demo.jpg,解釋:TP5的根目錄解析到public目錄下,所以直接寫/static/會直接讀取到/public/static下

  2. 將TP3中的__ROOT___或者__STATIC__寫入到配置文件當中,__ROOT___在TP中實際為模板的替換規則,那麼在TP5中將這些默認規則取消了,需要自主配置才可生效,配置如下:

///視圖輸出字元串內容替換
'view_replace_str'=>[//默認這里是沒有字元的
'__PUBLIC__'=>'/public/',
'__ROOT__'=>'/',
]

3. 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++;
}
?>

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

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

5. php中static靜態類與static 靜態變數用法區別

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都一樣,那靜態方法/變數存在還有什麼意義呢?
靜態 static
聲明類成員或方法為 static ,就可以不實例化類而直接訪問,不能通過一個對象來訪問其中的靜態成員(靜態方法除外)。靜態成員屬於類,不屬於任何對象實例,但類的對象實例都能共享。

6. php面向對象編程self和static的區別

在php的面向對象編程中,總會遇到
class test{
public static function test(){
self::func();

static::func();
}

public static function func(){}
}
可你知道self和static的區別么?

其實區別很簡單,只需要寫幾個demo就能懂:

Demo for self:

class Car
{
public static function model(){
self::getModel();
}

protected static function getModel(){
echo "This is a car model";
}
}
Car::model();
Class Taxi extends Car
{
protected static function getModel(){
echo "This is a Taxi model";
}
}
Taxi::model();
得到輸出
This is a car model
This is a car model
可以發現,self在子類中還是會調用父類的方法

Demo for static

class Car
{
public static function model(){
static::getModel();
}

protected static function getModel(){
echo "This is a car model";
}
}

Car::model();

Class Taxi extends Car
{
protected static function getModel(){
echo "This is a Taxi model";
}
}

Taxi::model();
得到輸出
This is a car model
This is a Taxi model
可以看到,在調用static,子類哪怕調用的是父類的方法,但是父類方法中調用的方法還會是子類的方法(好繞嘴。。)

在PHP5.3版本以前,static和self還是有一點區別,具體是什麼,畢竟都是7版本的天下了。就顫消此不去了解了。

總茄迅結呢橋握就是:self只能引用當前類中的方法,而static關鍵字允許函數能夠在運行時動態綁定類中的方法。

7. php public static function 怎麼用

//這個是靜態方法,沒有實例,直接調用即可:

classMyClass{

publicstaticfunctionaction(){
return'staticaction..';
}

}

echoMyClass::action();//staticaction

8. php static::

static關鍵字從PHP5.0就存在了。但從未有過"static::"這樣的寫法。
static的用法類似與C++, C#, Java,
class A{
static public function foo(){}
}
然後就可以以靜態方式調用A::foo();

PHP4.x不需要寫static,所有的方法都可以靜態調用。

閱讀全文

與php調用static方法相關的資料

熱點內容
有什麼做手帳app 瀏覽:156
phpjquery源碼 瀏覽:881
大話西遊手游源碼 瀏覽:653
javaudp代碼 瀏覽:660
linuxu盤啟動win7 瀏覽:990
如何啟用交換機dhcp伺服器 瀏覽:237
三田汽車壓縮機好嗎 瀏覽:294
馬蜂窩app偏向什麼客戶 瀏覽:366
php簡單的登錄注冊 瀏覽:554
我們接到上級命令 瀏覽:349
php本周星期一 瀏覽:65
裘錫圭pdf 瀏覽:726
android模擬器調試 瀏覽:135
sap命令大全 瀏覽:296
mysql導出數據命令 瀏覽:954
文件夾隱藏了出不來 瀏覽:562
電信網上大學源碼 瀏覽:205
rr輪轉調度演算法 瀏覽:253
我的世界無法登入伺服器怎麼辦 瀏覽:149
文件加密授權特定隱藏訪問控制 瀏覽:801