首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >构造函数返回值?

构造函数返回值?
EN

Stack Overflow用户
提问于 2012-08-10 22:55:56
回答 4查看 37.9K关注 0票数 31

看看下面的代码,我看到构造函数返回了一个值。我以为构造函数只返回对象。谁能告诉我我错过了什么?

代码语言:javascript
复制
public function __construct($username = null, $password = null){
        $urlLogin = "{$this->apiHost}/login/$username";

        $postData = sprintf("api_type=json&user=%s&passwd=%s",
                            $username,
                            $password);
        $response = $this->runCurl($urlLogin, $postData);

        if (count($response->json->errors) > 0){
            return "login error";    
        } else {
            $this->modHash = $response->json->data->modhash;   
            $this->session = $response->json->data->cookie;
            return $this->modHash;
        }
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-10 22:58:18

确实,你是对的。对构造函数的返回值不能做任何事情(除了使用它创建的对象)。

所以不,你没有遗漏任何东西,是编写代码的开发人员遗漏了。

如果直接调用函数,则在技术上可以使用构造函数的返回值

代码语言:javascript
复制
$obj->__construct();

这将允许您使用构造函数的返回值。然而,这是非常不常见的,也不推荐这样做。

票数 56
EN

Stack Overflow用户

发布于 2012-08-10 22:58:33

构造函数不返回任何内容,但您可以从中返回(由于某种原因,在某个点停止方法执行,但可以创建对象)。

票数 3
EN

Stack Overflow用户

发布于 2012-08-10 23:25:28

与其他语言不同,在PHP中可以显式调用构造函数。这只是另一个函数。看起来原始作者首先决定将一些可能失败的代码放在构造函数中,然后意识到他需要一种在失败后重新运行初始化的方法。

代码语言:javascript
复制
$result = $user->__construct($username, $password)

实际上是有效的,并且你确实得到了返回值。这显然是一种丑陋的做事方式。

在我看来,让代码在构造函数中触发副作用并不是一种好的做法。我会把代码放在一个单独的函数中,它的名字清楚地说明了它的作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11904255

复制
相关文章

相似问题

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