だから私はこれらの2つのクラスを作成しました
//Quarter.php
namespace Resources;
class Quarter {
...
}
//Epoch.php
namespace Resources;
class Epoch {
public static function initFromType($value, $type) {
$class = "Quarter";
return new $class($value, $type);
}
}
これは両方の非常に単純化されたバージョンですが、私の質問を説明するには十分です。ここに示されているクラスは、Quarter クラスが見つからないため機能しません。それを機能させるには、 $class 変数を次のように変更できます
$class = "\Resources\Quarter";
だから私の質問は、両方のクラスがすでに同じ名前空間のメンバーであるのに、なぜここで名前空間を使用する必要があるのですか? 名前空間は、クラス名を変数に入れるときにのみ必要です。
public static function initFromType($value, $type) {
return new Quarter($value, $type);
}
問題なく動作します。これはなぜですか?また、回避する必要がある潜在的なトラップはありますか?