2011-01-11 27 views
0

你好
我學習PHP,我見過很多空的函數在許多其他小項目,我不知道它如何可以幫助。空白函數如何幫助我們在PHP

例子:

public function first(){ 
// do nothing 
      } 
public function second(){ 
     // do nothing 
      } 
public function myfuntion(){ 
     // Codes 
      } 

另一個例子:
class user_bo{

protected $attributes = Array(); 

    public function __get($key){ 

     return array_key_exists($key, $this->attributes) ? $this->attributes[$key] : null; 
    } 

    public function __set($key, $value){ 

     $this->attributes[$key] = $value; 
    } 

    /** Constructor **/ 
    public function __construct(){ } 

} ?>

如何__construct()幫助我們在這種情況下,因爲它看起來像它不會做什麼嗎?

+0

你能舉一個真實的例子嗎? – lonesomeday 2011-01-11 12:55:05

+0

你能指出你看過的資源嗎?這個問題有點偏離了上下文。 – 2011-01-11 12:55:13

+0

它通常用於_examples_ $ – Shikiryu 2011-01-11 12:58:30

回答

2

當你說空函數,超過百合你談論__construct和魔術方法

他們幫助我們確定一項行動的授權的方式,例如

public class MyClass 
{ 
    private function __construct(){} 
} 

這使得我們阻止new MyClass電話,但可以通過調用靜態方法和做new self()

T爲重寫這裏也有其他原因,如不允許繼承,像這樣:

#Class 1 
public function Base 
{ 
    public function start() 
    { 
     echo "hello"; 
    } 
} 

#Class 2 
public function Layer extends Base 
{ 
} 

#Class 3 
public function Layer extends Base 
{ 
    private function start(){} 
} 

看着上述類2包含一個稱爲啓動可調用的方法,但會出現其從父的方法中,在3中的同一類,但其覆蓋按照當地的方法,因爲它是私人的,所以不允許使用這種方法。我們有一些接口告訴一個類它必須包含一組指定的方法,所以如果一個類實現了這樣的接口,它將需要定義所有需要的方法,否則它會拋出一個錯誤,所以程序員可以創建空方法來保持類結構。


在新的例如在光,還有一個空的公共__constructor除了沒有特別的原因,從當其擴展另一個類。

下面是一個例子:

class Main 
{ 
    public function __construct() 
    { 
     echo "Main"; 
    } 
} 

class FirstSub extends Main 
{ 
} 

class SecondSub extends Main 
{ 
    public function __construct() 
    { 
     echo "SecondSub"; 
    } 
} 

class ThirdSub extends Main 
{ 
    public function __construct() 
    { 
     echo "ThirdSub <br />"; 
     parent::__construct(); 
    } 
} 

你可以從結構看,我們有一個叫Main和三個子類的主類。

如果我們初始化主類將獲得構造函數print Main,但結果會隨着子類的不同而變化,因爲構造函數會覆蓋父類。

所以initializeing以下將導致:

  • 主營:Main
  • FirstSub:`` - 沒有
  • SecondSub:SecondSub
  • ThirdSub:ThirdSub<br />Main

你可以這樣使用空白構造對父類有影響。

0

空白功能恐怕還沒有實現,並且可能被用作佔位未來增強。

0

我不知道如果我得到你試圖解釋什麼,但有時也有很大幫助的人編寫程序的一般輪廓,只有經過他們就完成了完成和代碼的每個功能,因此不會切斷他們的思路。

要記住,他們需要的代碼的功能,他們創造,但離開它空。當然,這些函數的名稱可能比'first','second'或'myfunction'更具描述性。

-1

安,我猜你正在閱讀「PHP函數」。在這裏,作者解釋如何定義您自己的和自定義的功能。

<?php 
function foobar() { 
    echo "Foobar"; 
} 
?>