0

很快,标题是我想学习的。

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

我想回声something,但是怎么做?

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

4

7 回答 7

4

利用__toString

class example {
    function __construct() {
    }

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

$forex = new example();
echo $forex; //something 
于 2013-06-16T19:49:41.857 回答
1

你不能,构造函数是一个创建对象本身并实例化它的函数。您必须将代码放入构造函数外部的函数中返回某些内容,然后再调用它。

像这样:

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

  function init() {
    return 'something';
  }
}
$forex = new example();
echo $forex->init();
于 2013-06-16T19:50:46.210 回答
1

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

于 2013-06-16T19:50:48.300 回答
1

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

于 2013-06-16T19:52:09.367 回答
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();
于 2013-06-16T19:53:05.603 回答
1

Baba 回答的另一种方法是在一行中调用构造函数和所需的函数:-

class example {
    function __construct() {
    }

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

$forex = (new Example())->doSomething();
于 2013-06-16T19:56:08.370 回答
-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)。以正确的方式教海报。如果您需要回显,请使用该死的功能。如果在处理完某事后只需要一些输出,为什么还要构造一个对象?该对象的全部目的是保存以后可用的属性或多个协同工作并访问这些属性的方法。还有其他原因,但在当前情况下太先进了。

于 2013-06-16T20:54:19.877 回答