8

私は PHP7 の新機能を調べており、スカラー型ヒンティングなど、PHP7 が導入する新機能に向けてプロジェクトの準備を始めるかもしれないと考えていました。

私が最初に遭遇した問題の 1 つは、さまざまなクラスのコンストラクターでした。私は、次のような動作をする一般的な委託者をいくつか持っています。

public function __construct($data = null) {
    if (is_numeric($data)) {
        $this->controller->createById($data);
    }
    elseif (is_array($data)) {
        $this->controller->createByArray($data);
    }
    elseif (strlen($data) > 0) {
        $this->controller->createByUrl($data);
    }
}

もちろん、このメソッドに型ヒントを導入すると、あらゆる方向にエラーがスローされます。

私の知る限り、PHP7 は複数のコンストラクターのサポートを導入していません。この問題を回避する方法はありますか、それとも言語の制限の 1 つですか?

4

1 に答える 1

6

正しい、それは言語の制限の 1 つです。(そしてstrlen() > 0とにかく、タイプを介してチェックすることはできません。それは文字列に自動キャストされます...そのため、メソッドは ""、null、および false 以外のすべてを許可しますか?)

一般に、7.1 で PHP のタイプヒンティングを拡張するためのドラフトの RFC があります: https://wiki.php.net/rfc/union_types

それはあなたが書くことを可能にするでしょうint | float | array | string $data = null.

于 2015-07-21T18:59:08.747 に答える