尝试学习OO PHP,但我对某些事感到困惑。我之前使用框架将它们链接在一起 - >在这些函数中调用多个函数或变量。
ex. $variable = $this->query($stmt)->result()->name;
你会如何设置它?
class test{
public $name;
public function __construct(){
$this->name = 'Jon'; // pretending that Jon is a db call result
}
public function change_name($n){
$this->name = $n;
}
public function get_name(){
return $this->name;
}
}
$i = new test();
我该怎么做?或者这完全是不可能的。
$i->change_name('george')->get_name; // as an example
答案 0 :(得分:3)
当你说"链接"时,你真正的意思是"链接"
在你的例子中$ I-> change_name('乔治') - > GET_NAME; //作为一个例子
(!)你有2个错误
1) - > get_name应为 - > get_name(); //它的函数不是属性
2)即使使用 - > get_name(),也不会有效,因为它没有上下文。
以示例:
当你这样做时: $ i-> change_name(' george')//方法change_name()具有上下文$ i
我们继续:
$i->change_name('george')->get_name() // the method get_name() have the context returned by change name, in your case its nothing because your function change_name return nothing
如果我们查看你的change_name主体:
public function change_name($n){
$this->name = $n;
}
没有返回任何内容,这意味着如果您愿意,此函数将返回无效或无效。
在你的情况下你想要的是返回对象上下文," $ this"
尝试:
public function change_name($n){
$this->name = $n;
return $this;
}
当你做的时候做:
$ i-> change_name(' george') - > get_name()//方法change_name()具有更改名称返回的上下文,现在是其工作
答案 1 :(得分:1)
从$this
返回change_name()
:
public function change_name($n){
$this->name = $n;
return $this;
}
答案 2 :(得分:0)