关于php上$this的更多信息


More about $this on php

*更新示例

已经阅读了一些文章和php.net。但在理解"this"示例中的$this时仍然存在问题。我知道基本用途是什么。

让我们假设,我有一个函数,最后是这样的返回$this//$this 之后没有任何内容

$this(在方法to的末尾)指的是什么?我怎么能检查/回显$this是什么

public function check($source, $items = array()){
    foreach ($items as $item => $rules) {
        foreach($rules as $rule => $rule_value){
            $value = trim($source[$item]);
            $item = escape($item);
            if($rule === 'required' && empty($value)) {
                $this->addError("{$item} is required");
            } else if(!empty($value)) {
                switch($rule) {
                    case 'min':
                        if(strlen($value) < $rule_value ) {
                            $this->addError("{$item} must be a minimum of {$rule_value} characters");
                        }
                    break;
                    case 'max':
                        if(strlen($value) > $rule_value ) {
                            $this->addError("{$item} must be a maximum of {$rule_value} characters");
                        }
                    break;
                }
            }

        }
    }
    if(empty($this->_errors)) {
        $this->_passed= true;
    }
    return $this;
}   

*此代码是注册和验证类的一部分。但重点仍然是结尾的$this指的是什么。感谢

在您的示例中,$this指的是主类和对象。

    class MainClass 
    {
      public function doSomething($x, $y)
      {
         $this->content = "Rssult is: " . $x+$y;
         return $this;
      }
   public function printMe()
    {
         echo $this->content;
    }

}

它返回Object和类。

现在有什么用法?其中一个基本用法是用于方法链接。我是什么意思?

你见过这个吗?

$myClass = new MainClass();
$myClass->doSomething()->print();

上面的代码是用一种称为方法链的方法实现的,因为有一系列方法(函数)被不停地重复调用。

基本上,如果没有方法链接,上面的代码将是:

$myClass = new MainClass();
$s = $myClass->doSomething(5, 8);
$myClass->print();

但是使用方法链接,由于每个方法都会返回整个类,就像您有了新的MainClass()一样,因此它允许立即调用该方法。

尽管它并不完全是new MainClass(),因为"new"操作符创建了类的实例,而$this返回当前实例。

简而言之,$this表示PHP请返回类的当前INSTANCED副本(在返回$this之前,其属性可能已被调用的方法更改)。