㈠ php直接用類名調用靜態方法會不會觸發類的構造函數
調用靜態方法與觸發類的構造函數沒有必然關系。但是靜態方法可以實例化類本身,這時候會觸發構造函數,而且可以傳參數。如:
classclassname{
privatefunction__construct($a){
$this->a=$a;
exit($this->a);//列印一下
}
publicstaticfunctionstaticfun($a){
newself($a);
}
}
//usecaseasfollow:
$a='測試123';
classname::staticfun($a);
㈡ PHP類的構造方法
構造方法是類中的一個特殊方法。當使用 new 操作符創建一個類的實例時,構造方法將會自動調用,其名稱必須是 __construct() 。所以通常用它執行一些有用的初始化任務。該方法無返回值。
如果子類中定義了構造函數則不會暗中調用其父類的構造函數。要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct()。
與構造方法對應的就是析構方法,析構方法會在某個對象的所有引用都被刪除或者當對象被顯式銷毀之前執行的一些操作或者功能。析構函數不能帶有任何參數,其名稱必須是 __destruct() 。
同樣,如果子類中定義了析構函數則不會暗中調用其父類的析構函數。要執行父類的析構函數,需要在子類的析構函數中調用 parent::__destruct()。
注意:在析構函數中拋出一個異常會導致致命錯誤。
<?php
class Construct{
protected $a;
protected $b;
function __construct($a,$b){ //定義構造函數
$this->a=$a;
$this->b=$b;
}
function __destruct(){ //重新定義為初始值
$result=0;
echo '恢復乘積的初始值:'.$result;
}
}
class son extends construct{
private $c;
function __construct($c){
parent::__construct(6,10); //調用父類的構造方法,使用方法:parent::__construct(); 有參數加參數
$this->c=$c;
}
function show(){
$result=$this->a*$this->b*$this->c;
print 'abc的乘積是:'.$result.' ';
}
function __destruct(){
parent::__destruct(); //調用父類的析構函數,使用方式:parent::__destruct();
}
}
$test=new son(12); //實例化對象
$test->show(); //abc的乘積是:720 恢復乘積的初始值:0
?>
㈢ php5的構造函數和析構函數有哪些
構造函數:void __construct ([ mixed $args [, $... ]] )
PHP5允許開發人員為類定義構造函數。包含構造函數的類在創建實例時將自動調用其構造函數,所以構造函數適合完成初始化對象的操作。
注意:如果子類定義了構造函數,那麼父類的構造函數將不會被自動的隱式的調用。如果需要運行父類的構造函數,需要執行parent::__construct()。如果子類沒有顯式的定義構造函數,那麼子類將繼承父類的構造函數,並直接運行。 析構函數:
PHP5引入了析構函數的概念,類似於C++等面向對象語言中的析構函數的概念。析構函數在類實例的引用失效時、對象被銷毀、超出作用域、以及任意關閉序列時,將被調用。 注意:類似構造函數,當子類定義了自己的析構函數,需要使用parent::__destruct()來調用父類的析構函數。
㈣ php直接用類名調用靜態方法會不會觸發類的構造函數
不會呀,只有實例化對象時,才會自動調用構造函數。
㈤ php構造函數
類中有函數和變數。
類中定義的變數叫做屬性,
類中的函數叫做方法。
$this是指類本身,
$this->base()
指調用當前類中的base()方法。
構造函數可有可無。先可以不考慮構造函數的功能。
構造函數只是創建類的實例的時候自動被調用。其他地方也跟普通函數一樣。
類中與類名同名的函數成為構造函數。
等你寫多代碼以後自然而然的想寫構造函數了。那時候肯定會理解構造函數的用處。