A. php類中有靜態方法和非靜態的,我想問的是,什麼時候用靜態方法,靜態方法和普通方法有什麼不同
php類中的靜態方法和非靜態方法,跟一般我們所說OOP編程中的用法不盡相同,有些特性是不完善的,但你可以當它們是正規OOP的類來使用。
B. 什麼時候用靜態方法static - PHP進階討論
靜態方法就是隸屬於一個類的函數,為什麼希望讓這個函數隸屬於類,一般有兩種情況:1、函數的名字太常規,以至於可能與其它獨立函數產生命名沖突,則你把它作為類的靜態方法,可以變相起到封入命名空間的效果。比如你想為某個類定義一個特別版的setcookie();2、當一個函數希望訪問某個類的私有成員變數時(private 或 protected),顯然在通常情況下,它作為外部獨立函數是訪問不到的。把它定義為那個類的靜態方法,就可以作為類的成員函數輕松訪問那些私有成員變數了。另外對 6 樓做一個補充:靜態成員方法也有訪問級別,如果定義為了 private 或 protected,則外部是無法作為普通函數直接調用的。
C. php 一般什麼時候用靜態方法
1. 即使類中的方法並未用static聲明,但其未使用到可改變的類成員變數,在外部仍可用操作符::來調用;
2. 以靜態方式(用::操作符)調用的方法中$this的取值是由調用時的上下文決定的!而不是定義他的類!!
D. php 靜態方法 是什麼意思
<?php
header('content-type:text/html;charset=utf-8');
/*
普通方法,存放類內,只有一份
靜態方法,也是存放於類內,只有一份
區別在於:普通方法需要對象去調用,需要綁定$this
即,普通方法,必須要有對象,然後讓對象來調用
而靜態方法,不屬於哪一個對象,因此不需要綁定$this
即,不需要對象也可以調用
*/
class Human{
static public $head=1;
public function easyeat(){
echo '普通方法吃飯<br />';
}
static public function eat(){
echo '靜態方法吃飯<br />';
}
public function intro(){
echo $this->name;
}
}
Error_reporting(E_ALL|E_STRICT);
//此時沒有對象!方法可以執行
Human::eat();
/*
以下方法easyeat是一個非靜態方法,就由對象來調用,但,用類來調用此方法來也可以執行,而嚴格狀態下,此方法會執行,同時報錯,
Strict Standards: Non-static method Human::easyeat() should not be called statically in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 32
*/
Human::easyeat();
/*
接上,從邏輯來理解,如果用類名靜態調用非靜態(普通)方法
比如:intro()
那麼,這個$this是指哪個對象呢??
因此會報錯,因為找不到對象!
Fatal error: Using $this when not in object context in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 23
*/
Human::intro();
/*
如上分析,其實,非靜態方法,是不能由類名靜態調用的,但目前,php中的面向對象檢測不夠嚴格,只要靜態方法中沒有$this關鍵字,就會轉化成靜態方法來處理!
*/
$li=new Human();
$li->eat();
/*
總結:
類》訪問->靜態方法(類的方法)->可以
類》訪問->普通方法(對象的方法)->不可以(雖然方法里不用$this關鍵字時,可以!但不支持這種寫法)
對象》訪問》靜態方法(類的方法)->可以
對象》訪問》普通方法(對象的方法)->可以
*/
?>
E. 在php開發中什麼時候使用static,什麼時候不使用 也就是什麼時候該將類或方法靜態化,什麼時候不能。
恆哥,不好意思!我說一下,不對之處還請指正!不能用static修飾class吧!我只用過靜態變數,靜態成員方法!靜態成員方法一般在該方法不屬於某個特定的類實例時使用,即直接屬於某個類,靜態成員方法相當於一個全局函數!以前看書說類和對象在內存中儲存方式上得知,靜態方法不存在於儲存對象的堆棧中,而是保存在定義類的堆棧中,說明在對象中你「找不到」靜態方法的!但是PHP也能直接通過對象的方式調用靜態的方法,只不過PHP在內部處理了這種調用!但是類的靜態成員變數是不能直接通用對象的方式來調用的。
F. php 什麼時候 靜態方法
當一個方法被執行時才占內存,執行完畢就釋放了,靜態函數載入時會放到靜態區,暫時不佔內存
G. php什麼時候用靜態方法
靜態方法就是隸屬於一個類的函數,為什麼希望讓這個函數隸屬於類,
H. php中靜態方法的問題
self::是代表在本類里調用靜態方法get();因為在靜態方法裡面只能調靜態方法,不能調用實例方法,如果調用實例方法的話那就用this,
I. PHP面向對象的靜態方法具體什麼時候用
靜態變數,沒有什麼特定的情況。就像public一樣,只不過調用方法不一樣。一個是$this->變數名,一個是self::變數名