*更新示例
已经阅读了一些文章和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之前,其属性可能已被调用的方法更改)。