25

したがって、すべてのインスタンスを安全にリファクタリングできますか

class Blah
{
    // ...
    private $foo = null;
    // ...
}

class Blah
{
    // ...
    private $foo;
    // ...
}

?

4

3 に答える 3

27

型指定されていないプロパティ

簡単な答えです。http://php.net/manual/en/language.types.null.phpを参照してください。

特別な NULL 値は、値のない変数を表します。NULL は、null 型の唯一の可能な値です。

プロパティでを実行することで簡単にテストでき、var_dump()両方のインスタンスが表示されます。NULL

class Blah1
{
    private $foo;

    function test()
    {
        var_dump($this->foo);
    }
}

$test1 = new Blah1();
$test1->test(); // Outputs NULL


class Blah2
{
    private $foo = NULL;

    function test()
    {
        var_dump($this->foo);
    }
}

$test2 = new Blah2();
$test2->test(); // Outputs NULL

型付きプロパティ

PHP 7.4 は型付きプロパティを追加します。これはnull、型なしプロパティのようにデフォルトではデフォルトではなく、代わりに特別な「初期化されていない」状態にデフォルト設定されます。プロパティが書き込まれる前に読み取られると、エラーが発生します。プロパティについては、PHP ドキュメントの「型宣言」セクションを参照してください。

于 2012-12-31T04:16:29.790 に答える
11

プロパティの既定値が null であることは、既定値がないことと同じですか?

はい

ドキュメントに従って:

特別なNULL値は、値のない変数を表します。

null特定の値に設定されていない変数の概念です。nullと空の1の値を区別するときに、比較的間違いを犯しやすいです。

private $foo = null;とまったく同じprivate $foo;です。どちらの場合も、クラス属性は の値で定義されますnull

isset;falseの両方の宣言に対して正しく返されます。は の反対のブール値であり、これらの値は上記のようにです。$fooissetis_nullnull

参考までに、 PHP 型比較表を確認することをお勧めします。

1: この場合、empty関数に対して true を返すか、そうでなければ「偽」と見なされる型指定された値を参照しています。IE null0false、空の配列 ( array())、および空の文字列 ( '')。'0'も技術的には空ですが、言語としての PHP の奇妙な点だと思います。

于 2013-01-02T03:30:49.033 に答える