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

ババの答えに代わるものは、コンストラクターと必要な関数を 1 行で呼び出すことです。

class example {
    function __construct() {
    }

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

$forex = (new Example())->doSomething();
于 2013-06-16T19:56:08.370 に答える
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

コンストラクターの仕事は、後でアクセスまたはエコーできる内部プロパティをセットアップすることです。または、特定の要件が満たされない場合に例外をスローして構築を防止します。何かをエコーするべきではありません。エコーは後で行います。

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 に答える