Re: How can I do this -- method chaining

From: Date: Wed, 30 Jan 2008 12:55:29 +0000
Subject: Re: How can I do this -- method chaining
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-268318@lists.php.net to get a copy of this message
Nathan Nobbe wrote:
Actually, I don't think so. I believe constructors return void, while the 'new' keyword returns a copy of the object.
im pretty sure constructors return an object instance: php > class Test { function __construct() {} } php > var_dump(new Test()); object(Test)#1 (0) { }
AFAIK, constructor simply constructs the object, and *new* is the one that binds the reference to the variable on the lhs. So, constructors return nothing.
but anyway, how could you even test that __construct() returned void and the new keyword returned a copy of the object? new essentially invokes __construct() and passes along its return value, near as i can tell. Christoph, if you dont want to write a function in the global namespace, as suggested in the article, Eric posted, just add a simple factory method in your class, eg. <?php class Test {
    public static function getInstance() {
        return new Test();
    }
    public function doSomething() {
        echo __METHOD__ . PHP_EOL;
    }
} Test::getInstance()->doSomething(); ?> -nathan
-- Regards, Anup Shukla

« previous php.general (#268318) next »