私はPHP OOPプログラミングに関しては初心者です。次のクラス名がいつ、どのように使用されるのか、いつ使用する必要があるのか わかりません。
$a = new Classname();
$a = new Classname;
$a = ClassName::function();
$a = ClassName::getInstance();
ばかげた質問に感謝し、申し訳ありません:
これらは同一です。
$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;
はどうかと言うと
$a = new Classname();
$a = new Classname;
__construct()
受け取る引数がない場合は違いはありません。
はどうかと言うと
$a = ClassName::function();
$a = ClassName::getInstance();
これは静的メソッドの通常の呼び出しです
為に:
$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() は必要ありません。代わりに、上記のように記述できます)。