在这一点上,假设我有一个这样的课程:
class Sentence {
__construct($content) {
$this->content = $content;
}
public function grab_word($num) {
$words = explode(" ", $this->content);
return $words[$num+1];
}
}
所以给定的接口允许我创建一个new Sentence
,然后我可以调用grab_word()
类方法来获取句子中的一个单词:
$sentence = new Sentence("Lorem ipsum dolor sit amet");
echo $sentence->grab_word(2);
但是,我想做的是添加另一个链式类方法,让我能够将这个词大写。
$sentence->grab_word(2); # -> ipsum
$sentence->grab_word(2)->caps(); # -> IPSUM
显然,这是行不通的,因为链式方法需要对象继承。如果我要创建并链接该函数 - 由于返回不是继承的对象 caps()
,它将返回一个错误。Sentence
总而言之,我的问题是如何实现可选地链接这些方法的能力,但在需要时仍返回非对象(如在我的输出示例中)。