PHP调用类方法/函数

17

如何调用以下类方法或函数?

假设我从 URL 中获取了以下参数:

$var = filter($_GET['params']);

类:

class Functions{

    public function filter($data){
        $data = trim(htmlentities(strip_tags($data)));

        if(get_magic_quotes_gpc())
            $data = stripslashes($data);

        $data = mysql_real_escape_string($data);

        return $data;
    }

}

谢谢。


3
顺便提一下你的问题,如果你打算使用Functions::filter()这段代码,请注意PHP中的mysql_*扩展已被弃用。请使用mysqli_*或pdo_*,并强烈考虑使用预处理语句(这将消除您的函数需求)。 - dnagirl
2
不要随意“过滤”数据。这只会完全扭曲你的数据。首先要了解你在尝试做什么:The Great Escapism(或:有关文本内文本处理需要知道的内容) - deceze
7个回答

30
回答您的问题,目前的方法是创建对象,然后调用方法:
$functions = new Functions();
$var = $functions->filter($_GET['params']);

另一种方法是将该方法设为static,因为该类没有私有数据可依赖:

public static function filter($data){
这样就可以像这样调用:
$var = Functions::filter($_GET['params']);

最后,你不需要一个类,可以只有一些函数的文件来包含它们。所以你可以移除 class Functions 以及方法中的public。这样就可以像你试过的那样调用了:

$var = filter($_GET['params']);

5

在类内部,您可以使用以下方式调用函数:

 $this->filter();

在类之外,你需要创建一个类的对象

 ex: $obj = new Functions();

     $obj->filter($param);    

请访问php官网了解更多关于php中的面向对象编程(OOPs)。

这个示例

class test {
 public function newTest(){
      $this->bigTest();// we don't need to create an object we can call simply using $this
      $this->smallTest();
 }

 private function bigTest(){
      //Big Test Here
 }

 private function smallTest(){
      //Small Test Here
 }

 public function scoreTest(){
      //Scoring code here;
 }
}

$testObject = new test();

$testObject->newTest();

$testObject->scoreTest();

希望这能有所帮助!

Sandip,如果没有实例,他也无法在类内部使用 $this 引用它。 - Volkan

2

如果你想从其他页面调用它,请为该类创建对象并调用。

$obj = new Functions();

$var = $obj->filter($_GET['params']);

或者在同一个类实例 [方法] 内尝试这样做。

$var = $this->filter($_GET['params']);

1
小小的争议,$this的使用必须在对象内部而不是页面内部。 - dnagirl
@dnagirl 小小的疑问:$this 的使用必须在对象的实例方法中,而不仅仅是在对象的任何地方(即不是静态的,也不是在方法体外部)。 - Colin M
@ColinMorelli:微不足道的挑剔:这就是为什么我说“对象”而不是“类”。;) 但清晰度很好,你完全正确。 - dnagirl
@dnagirl 没有任何挑剔:说得好。但我仍然看到有人尝试在类的顶部声明 private $property = $this->getPropertyValue(),并想知道为什么它不起作用 :)。无论如何 - 我只是觉得指出比你指出的更小的事情...只是为了好玩。 - Colin M

1
$f = new Functions;
$var = $f->filter($_GET['params']);

请查看PHP手册中关于面向对象编程的部分。

1
由于该函数根本没有使用$this,因此您可以在public后面添加一个static关键字,然后调用。
Functions::filter($_GET['params']);

避免为了一个方法调用而创建对象

0
你需要为这个类创建一个对象Object
$obj = new Functions();
$var = $obj->filter($_GET['params']);

0

这样:

 $instance = new Functions(); // create an instance (object) of functions class
 $instance->filter($data); // now call it

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接