<?php
class DBFactory {
function __construct(){
return 'Need to echo';
}
}
$db = new DBFactory;
echo $db;
?>
不起作用:(
答案 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