2011-12-28 121 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

相关问题