2011-12-28 54 views
1

我開始學習oop php,我不明白如何在類執行中創建一個方法。 這是代碼:php:如何讓一個類中的方法運行?

class GrabData { 
public $tables=array(); 
public $columns=array(); 
public $argList; 


function __construct(){ 
    $this->argList=func_get_args(); 
    $pattern; 
    var_dump($this->argList); 
    if(!empty($this->argList)){ 

     foreach($this->argList as $value){ 
      if(preg_match("/.+_data/",$value,$matches)){ 
       if(!in_array($matches[0],$this->tables)){ 
        array_push($this->tables,$matches[0]); 
        var_dump($this->tables); 
       } 
       $pattern="/". $matches[0] . "_" . "/"; 
       array_push($this->columns,preg_replace($pattern,"",$value)); 
       var_dump($this->columns); 
      } 

     } 
    } 
} 

public function gen_query(){ 
    var_dump($this->argList); 
    echo "haha"; 
} 

    gen_query(); 
} 

new GrabData("apt_data_aptname"); 

現在,當我提出一個新的GrabData對象__construct功能運行,但gen_query功能犯規執行。我如何讓它執行它?

回答

2

如果你總是希望有gen_query功能運行的類啓動時,你可以鏈接到它在構造函數的底部,像這樣:

function __construct() { 
    // Do your stuff here and then... 
    $this->gen_query(); 
} 
1

首先,你可以指定由new運營商給一個變量返回的對象 - 然後使用該變量來執行你的對象上的方法:

class GrabData { 
    public $tables=array(); 
    public $columns=array(); 
    public $argList; 

    function __construct() { 
     $this->argList=func_get_args(); 
     $pattern; 
     var_dump($this->argList); 
     if(!empty($this->argList)){ 
      foreach($this->argList as $value){ 
       if(preg_match("/.+_data/",$value,$matches)){ 
        if(!in_array($matches[0],$this->tables)){ 
         array_push($this->tables,$matches[0]); 
         var_dump($this->tables); 
        } 
        $pattern="/". $matches[0] . "_" . "/"; 
        array_push($this->columns,preg_replace($pattern,"",$value)); 
        var_dump($this->columns); 
       } 

      } 
     } 
    } 

    public function gen_query() { 
     var_dump($this->argList); 
     echo "haha"; 
    } 
} 

$super_object = new GrabData("apt_data_aptname"); 
$super_object->gen_query(); 
0

一種不同的方式來而不起始類是運行類函數使用雙冒號範圍解析運算符,奇怪地稱爲「Paamayim Nekudotayim」。

GrabData::gen_query(); 

您可以閱讀它here

+0

不知道Paamayim Nekudotayim名。 – 2011-12-28 08:22:20

+0

對於使用'$ this'的函數? – hakre 2011-12-28 08:55:25

相關問題