我从laravel中注意到的一件事是,您可以获得项目并链接功能。在laravel中如何实现?让我们在这里举个例子
从模型获取数据时,您通常可以执行以下操作
Model::get($id)->toArray();
但是,如果仅输入Model::get($id)
,那么它也会返回数据。它是如何实现的?我想制作这样的方法,但是我面临的问题是,如果我return $this
可以执行其他操作,但是我没有任何数据。但是,如果我返回数据,则无法执行链接。
如果有人可以给我提供一个示例以及有关其完成方式的一些解释,那就太好了。
答案 0 :(得分:0)
您可以使用clase作为对象属性,并且还具有与之关联的转换魔术方法。在object属性的类中,您提供了链接的方法,当您尝试单独使用该值时,php将自动调用magic方法。例如:
让我们说你有Foo课
class Foo {
var $value;
public function __construct($value) {
$this->value = $value;
}
//the magic method __toString is used when you attempt to use the strval of
// an object instance of this class
public function __toString() {
return strval($this->value);
}
function toArray(){
return [
'value' => $this->value
];
}
}
和一个班级考试
class Test{
static $foo;
}
如果将Test::$foo = new Foo('var');
初始化,则可以使用示例中所示的方法链接:
echo Test::$foo; //will echo "var"
print_r(Test::$foo->toArray()); //will echo "Array ( [value] => var )"
此处的引用:http://php.net/manual/en/language.oop5.magic.php#object.tostring