1

私はPHP OOPプログラミングに関しては初心者です。次のクラス名がいつ、どのように使用されるのか、いつ使用する必要があるのか​​ わかりません。

$a = new Classname();
$a = new Classname;

$a = ClassName::function();
$a = ClassName::getInstance();

ばかげた質問に感謝し、申し訳ありません:

4

3 に答える 3

10

これらは同一です。

$a = new Classname();
$a = new Classname;

クラスコンストラクターが他のパラメーターを受け取らない場合、または必要としない場合は、これらを交換可能に使用できます。

例:

class Classname
{
    public function __construct($var = null)
    {
        // ..
    }

    static public function getInstance()
    {
        // ..
    }
}

この場合$a = new Classname;、and$varを使用してデフォルト値を取得するか$a = new Classname('hello')、および$varを渡された値と等しくします。


これらは両方とも静的メソッド呼び出しです。

$a = ClassName::function();
$a = ClassName::getInstance();

1つは「function」(存在できない-予約語です)というメソッドを呼び出し、もう1つは「getInstance」という名前のメソッドを呼び出します。それらをいつ使用するかは、実際にはメソッドが何をするかに依存します。

静的メソッドは、オブジェクトインスタンスを作成せずに呼び出すことができます。

つまり

Classname::staticMethod();

$obj = new Classname;
$obj->method;
于 2012-08-02T11:07:21.267 に答える
4

はどうかと言うと

$a = new Classname(); 
$a = new Classname;

__construct()受け取る引数がない場合は違いはありません。


はどうかと言うと

$a = ClassName::function();
$a = ClassName::getInstance();

これは静的メソッドの通常の呼び出しです

于 2012-08-02T11:06:10.073 に答える
1

為に:

$a = new Classname();
$a = new Classname;

これらは同じことを言う 2 つの異なる方法です: パラメータなしでクラス "Classname" への新しい参照を作成します (php は if () に関してより寛大で、パラメータを指定する必要があるかどうかについては、他の多くのプログラミング言語よりも寛大です)。

為に:

$a = ClassName::function();
$a = ClassName::getInstance();

これら 2 つは関数 "function()" と "getInstance()" の静的呼び出しであるため、$a はこれらの関数の適切な戻り値に設定されます。静的とは、クラス自体を参照せずに関数を使用できることを意味します (したがって、 $b=ClassName(); $a=$b->function() は必要ありません。代わりに、上記のように記述できます)。

于 2012-08-02T11:11:32.543 に答える