回声返回构造方法;

时间:2010-07-15 09:34:40

标签: php oop constructor

<?php
class DBFactory {  
     function __construct(){  
         return 'Need to echo';
                  }  
}  
$db = new DBFactory;  
echo $db;
?>

不起作用:(

6 个答案:

答案 0 :(得分:9)

如果您尝试在构造函数上返回值,我不明白为什么要查看OOP。

OOP的重点是拥有执行许多任务的对象,如果你想返回一个字符串,数组,资源,那么OOP不适合你。

__构造函数用于在对象初始化的前期阶段启动代码,允许您在用户可以使用它之前执行代码来准备对象。

如果你想在对象上使用__toString然后明智地使用它,它的主要用途是在对象中的可读性因素,而不是存储等,主要用于错误调试。

当你使用new关键字创建一个对象时,php的处理器会创建一个对象并将其分配给内存,然后运行该构造但不保留任何返回的值,在构造函数到达其endppoint之后,内存中对象的链接将返回到您要求的变量。所以在理论上你可以运行$db->__construct()作为它仍然是一个方法,但只有在完全创建对象之后。

只需创建一个返回字符串的方法

class DBFactory
{
     function whatAmI()
     {
         return 'I am DBFactory';
     }  
}
$MyOBJECT = new DBFactory;
echo $MyOBJECT->whatAmI();

这真的很愚蠢,但你想知道如何,

class DBFactory{  
     function __construct()
     {
         return 'Need to echo';
     }
}

$db = new DBFactory();
echo $db->__construct();

答案 1 :(得分:7)

您无法从构造函数返回任何内容。您已经获得了一个新对象,除此之外您无法获得另一个值,并将它们分配给$db

答案 2 :(得分:3)

构造函数不应返回任何内容。

如果要回显对象,则必须使用魔术方法__tostring定义如何形成其字符串表示形式:

class DBFactory {  
     function __tostring(){  
         return 'Need to echo';
     }  
}
$db = new DBFactory();
echo $db;

答案 3 :(得分:1)

通常,不可能在类的构造函数中返回值。在这种情况下,$ db包含类的实例,而不是返回值。

您可以构建一个单独的函数,并让该函数返回值:

<?php
class DBFactory {  
      function toEcho() {
        return 'Need to echo';
      }
}  
$db = new DBFactory();  
echo $db->toEcho();
?>

答案 4 :(得分:0)

$db = new DBFactory();  

我认为这个“()”也在这里

答案 5 :(得分:0)

您可以使用__toString魔术方法来获取__construct以回显 或者您可以不用使用__toString magic方法就可以获取方法。选择其中一种方法有很多。

enter code here

public function __construct($foo)
{
    $this->foo = $foo;
}

public function __toString()
{
    return $this->foo;
}

}

$ class = new TestClass('Hello'); echo $ class; ?> enter code here https://www.php.net/manual/en/language.oop5.magic.php#object.tostring