【问题标题】:PHP call Class method / functionPHP调用类方法/函数
【发布时间】:2013-03-08 03:05:24
【问题描述】:

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

假设我从 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;
    }

}

谢谢。

【问题讨论】:

  • 除了您的问题之外,如果您的 Functions::filter() 是您打算使用的代码,请注意 php mysql_* 扩展已被弃用。使用 mysqli_* 或 pdo_* 并强烈考虑使用准备好的语句(无论如何这将消除对函数的需求)。
  • 不要随意“过滤”数据。您只是将数据完全变形。首先在这里了解您要做什么:The Great Escapism (Or: What You Need To Know To Work With Text Within Text)

标签: php class function methods


【解决方案1】:

要回答您的问题,当前的方法是创建对象然后调用该方法:

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

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

public static function filter($data){

然后可以这样调用:

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

最后,您不需要类,只需包含一个包含函数的文件即可。因此,您删除了方法中的class Functionspublic。然后可以像您尝试的那样调用它:

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

【讨论】:

    【解决方案2】:

    在类中,您可以使用以下方法调用函数:

     $this->filter();
    

    课外

    你必须创建一个类的对象

     ex: $obj = new Functions();
    
         $obj->filter($param);    
    

    更多about OOPs php

    这个例子:

    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 在类中引用它。
    【解决方案3】:

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

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

    或者在同一个类实例[方法]中,试试这个。

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

    【讨论】:

    • 小问题,$this的使用必须在对象内,不能在页面内。
    • @dnagirl Small(er) 狡辩:$this 的使用必须在对象的实例方法中,而不仅仅是对象中的任何地方(即不是静态,也不是在方法体之外)跨度>
    • @ColinMorelli:小问题:这就是我说“对象”而不是“类”的原因。 ;) 但是清晰度很好,你是完全正确的。
    • @dnagirl 一点也不狡辩:Touche。但我仍然看到人们尝试整体:private $property = $this->getPropertyValue() 声明在他们班的顶部,想知道为什么它不起作用:)。无论如何 - 我真的只是想指出一些比你指出的更小的东西......为了好玩。
    【解决方案4】:
    $f = new Functions;
    $var = $f->filter($_GET['params']);
    

    查看Object Oriented programming 上的 PHP 手册部分

    【讨论】:

      【解决方案5】:

      由于函数根本没有使用$this,你可以在public之后添加static关键字,然后调用

      Functions::filter($_GET['params']);
      

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

      【讨论】:

        【解决方案6】:

        您需要为class. 创建Object

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

        【讨论】:

          【解决方案7】:

          这边:

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

          【讨论】:

            猜你喜欢
            • 2012-02-10
            • 1970-01-01
            • 2012-07-15
            • 2013-06-19
            • 2012-09-26
            • 2010-12-16
            • 2014-05-22
            • 2020-11-01
            • 1970-01-01
            相关资源
            最近更新 更多