2014-01-14 51 views
0

不是几句话好不同类型的变种,是我想要做的是:方法返回根据上下文

  1. 返回字符串

    $obj->method(); 
    
  2. 在这种情况下,我想method()到返回一个对象

    $obj->method()->method2(); 
    

这可能吗? 如果可能的话,有人可以帮助我吗?

+2

被调用的方法不知道它在哪个上下文中被调用。所以它不能确定它是否应该返回结果或它自己。 – ToBe

+0

你可以传递一个参数给'method()来告诉它返回什么。 –

+0

请停止尝试将* magic *添加到您的代码中。这总是一个可怕的想法。 –

回答

2

号的method()方法不能知道它是否将使用作为一个字符串或作为对象。你可以这样做的唯一的事情来有点接近你的预期是将它与一个__toString()方法返回一个对象:

<?php 

class YourObject { 
    public function method2() { 
     // ... 
    } 

    public function __toString() { 
     return 'some string'; 
    } 
} 

?> 

,并有$obj->method()回报这个类的一个实例。您可以使用该字符串(echo $obj->method();)以及对象($obj->method->method2();)。

+0

我想这是解决这个问题的一种方法。取决于返回后如何使用它。 –

+0

Thx!它符合我的要求! – Julien

0

传递一个简单的布尔值给方法来告诉它返回什么。

相关问题