面向对象的世界对我来说是相当新的,所以请和我一起裸照。面向对象方法链接可选返回
在这一点上,让我们说我有一个类,像这样:
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
对象,它将返回一个错误。总结起来,我的问题是如何实现链接这些方法的能力,但仍然会在需要时返回一个非对象(就像我的输出示例中那样)。
短:你不能。复杂:你可以创建一个对象来携带当前转换后的值,然后实现'__toString()'以便在需要时将该对象隐式转换为字符串。当然不值得努力。 – mario