<?php
class DBFactory {
function __construct(){
return 'Need to echo';
}
}
$db = new DBFactory;
echo $db;
?>Not works :(
发布于 2010-07-15 17:47:02
我不明白,如果你尝试在构造函数上返回值,为什么还要研究OOP。
OOP的全部意义在于拥有执行许多任务的对象,如果你想返回一个字符串、数组、资源,那么OOP不适合你。
__constructors用于在对象初始化的前期阶段初始化代码,它允许您在用户可以使用对象之前执行代码以准备对象。
如果您希望在对象上使用__toString,那么请明智地使用它,它的主要用途是对象中的可读性因素,而不是主要用于错误调试的存储等。
当您使用new关键字创建一个对象时,php的处理器会创建一个对象并将其分配给内存,然后它会运行该构造,但不会保存该构造的任何返回值,在构造函数到达其端点后,内存中该对象的链接将返回给您所要求的变量。所以从理论上讲,你可以运行$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();发布于 2010-07-15 17:36:55
您不能从构造函数返回任何内容。你已经得到了一个新的对象,你不能在上面得到另一个值,然后把这两个值都赋给$db。
发布于 2010-07-15 17:37:46
构造函数不应该返回任何内容。
如果要回显一个对象,则必须定义如何使用神奇的方法__tostring形成其字符串表示形式
class DBFactory {
function __tostring(){
return 'Need to echo';
}
}
$db = new DBFactory();
echo $db;https://stackoverflow.com/questions/3254279
复制相似问题