如何从构造函数中获取返回的数据?

时间:2013-06-16 19:46:39

标签: php

很快,标题就是我想要学习的内容。

class example {
    function __construct() {
        return 'something';
    }
}
$forex = new example();
// then?

我想回复something,但是如何?

我知道我可以定义一个变量而且我可以在课外达到这个但是我写这个问题的目的只是学习。有什么办法吗?

7 个答案:

答案 0 :(得分:4)

使用__toString

class example {
    function __construct() {
    }

    function __toString() {
        return 'something';
    }
}

$forex = new example();
echo $forex; //something 

答案 1 :(得分:1)

你不能,一个构造函数是一个创建对象本身并实例化它的函数。你必须把代码放在构造函数之外的函数中返回一些东西并在之后调用它。

像这样:

class example {
  function __construct() {
    //setup
  }

  function init() {
    return 'something';
  }
}
$forex = new example();
echo $forex->init();

答案 2 :(得分:1)

我们无法从构造函数返回值。在内部,它返回对新创建的对象的引用。

答案 3 :(得分:1)

构造函数不返回任何内容。如果目标是在构造过程中回显某些东西,那么只需将echo "something";添加到构造函数的主体

答案 4 :(得分:1)

构造函数返回一个新对象。添加一个返回something的方法并回显该输出:

class example {
private $data;

function __construct() {
    // something for the constructor to do.
    // this could have been done in the property declaration above
    // in which case the constructor becomes redundant in this example.

    $this->data= 'something';
}
function getSomething() {
  return $this->data;
}
}
$forex = new example();
// then?
echo $forex->getSomething();

答案 5 :(得分:1)

Baba的答案的另一种选择是在一行中调用构造函数和所需的函数: -

class example {
    function __construct() {
    }

    function doSomething() {
        return 'something';
    }
}

$forex = (new Example())->doSomething();

答案 6 :(得分:-1)

构造函数的作用是设置内部属性,以后可以访问或回显。或者如果不满足某些要求,则抛出异常并阻止构造。 不应该回应一些东西。回声是在以后完成的。

class example {
    public $time = null;
    function __construct() {
        $this->time = time();
    }
}

$ex = new example();
echo strftime('%Y-%m-%d %H:%M:%S', $ex->time);

我不明白为什么响应者鼓励这里的不良做法 (echoing in constructor)。以正确的方式教海报。如果你需要回声,请使用该死的功能。如果在处理之后只需要一些输出,为什么要构造一个对象?该对象的整个目的是保存以后可用的属性或多个一起工作并访问这些属性的方法。还有其他原因,但对于当前的背景来说还是太先进了。