首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回声返回构造方法;

回声返回构造方法;
EN

Stack Overflow用户
提问于 2010-07-15 17:34:40
回答 6查看 3.9K关注 0票数 1
代码语言:javascript
复制
<?php
class DBFactory {  
     function __construct(){  
         return 'Need to echo';
                  }  
}  
$db = new DBFactory;  
echo $db;
?>

Not works :(

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-07-15 17:47:02

我不明白,如果你尝试在构造函数上返回值,为什么还要研究OOP。

OOP的全部意义在于拥有执行许多任务的对象,如果你想返回一个字符串、数组、资源,那么OOP不适合你。

__constructors用于在对象初始化的前期阶段初始化代码,它允许您在用户可以使用对象之前执行代码以准备对象。

如果您希望在对象上使用__toString,那么请明智地使用它,它的主要用途是对象中的可读性因素,而不是主要用于错误调试的存储等。

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

只需创建一个返回字符串的方法,如下所示

代码语言:javascript
复制
class DBFactory
{
     function whatAmI()
     {
         return 'I am DBFactory';
     }  
}
$MyOBJECT = new DBFactory;
echo $MyOBJECT->whatAmI();

这真的很愚蠢,但是你想知道是怎么做的,

代码语言:javascript
复制
class DBFactory{  
     function __construct()
     {
         return 'Need to echo';
     }
}

$db = new DBFactory();
echo $db->__construct();
票数 9
EN

Stack Overflow用户

发布于 2010-07-15 17:36:55

您不能从构造函数返回任何内容。你已经得到了一个新的对象,你不能在上面得到另一个值,然后把这两个值都赋给$db

票数 7
EN

Stack Overflow用户

发布于 2010-07-15 17:37:46

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

如果要回显一个对象,则必须定义如何使用神奇的方法__tostring形成其字符串表示形式

代码语言:javascript
复制
class DBFactory {  
     function __tostring(){  
         return 'Need to echo';
     }  
}
$db = new DBFactory();
echo $db;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3254279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档