1

私はOOPを学ぶのは初めてです。これまでに多くの記事を読み、いくつかのチュートリアルを試しました。コンストラクターでパラメーターを宣言するときに、一部の値をnullにする必要があるのはなぜかと思います。

    function __construct($hostname = NULL, $username = NULL, $password = NULL, $database = NULL)
    {
        $this->hostname = !empty($hostname) ? $hostname : "";
        $this->username = !empty($username) ? $username : "";
        $this->password = !empty($password) ? $password : "";
        $this->database = !empty($database) ? $database : "";
    }

このような。本当に知りたいです。

4

4 に答える 4

2

引数をNULLのままにすると、関数呼び出し中にすべてのパラメーターが渡されなくても、関数が実行されます。

たとえば、関数が3つの引数を予期し、2つだけを指定し、関数定義で3番目のパラメーターがNULLとして割り当てられていない場合、関数はエラーをスローします。

于 2012-07-27T05:48:49.870 に答える
2

コンストラクターでパラメーターを宣言するときに、一部の値をnullにする必要があるのはなぜかと思います。

これらをヌルにする必要はありません。

これらは、パラメータのデフォルト値としてnullになります。たとえば、例で指定した関数の場合、次の5つの方法のいずれかで呼び出すことができます。

  1. 引数なし
  2. $hostnameを使用
  3. $ hostname、$ username
  4. $ hostname、$ username、$passwordを使用
  5. $ hostname、$ username、$ password、$databaseを使用

$ hostname、$ passwordを使用して関数を呼び出し、関数にデフォルト値の$usernameを想定させることはできないことに注意する必要があります。

于 2012-07-27T05:50:52.613 に答える
1

これはデフォルト値のコンストラクターです。パラメーターが_constructメソッドに渡されない場合、変数にNULL値が割り当てられます。したがって、これは、このコンストラクターにパラメーターを渡す必要がないことを意味します。

于 2012-07-27T05:51:16.380 に答える
1

この構文は、パラメーターを渡さずにクラスを開始できるようにするためのものです。

function __construct($hostname = NULL, $username = NULL, $password = NULL, $database = NULL)

このシグニチャは、パラメータをオプションで渡すことができることを示しています。Class A{}このコンストラクタがあれば、次の方法でオプションで開始できます。

$t = new A();
$t1 = new A('locathost','user1','pw1', $db_connection);
$t2 = new A('localhost');

これらのすべての初期化が有効になります。

于 2012-07-27T05:51:45.517 に答える