いいえ、クラスはではありません。は、オブジェクト指向プログラミングを実行している場合は静的である必要があります。それは工場にも当てはまります。この例で示したStaticファクトリメソッドパターンは、SRPに違反しているため、悪い習慣とみなされます。
静的変数は、異なる名前の単なるグローバルであり、静的メソッドは、名前空間がクラスのように見えるような名前空間関数です。
同じセッションインスタンスを使用するには複数のオブジェクトが必要な場合は、それらをすべて提供する必要があります。直接または工場を使用してください。
class ObjectFactory
{
protected $session;
public function __construct($session)
{
$this->session = $session;
}
public function create($name)
{
return new $name($this->session);
}
}
このファクトリのインスタンスは、セッションを使用する作成構造を必要とする任意のオブジェクトに渡します。このファクトリでオブジェクトを作成するだけで、すべてが同じセッションインスタンスで初期化されます。
より簡略化された例では先ほど手動で各オブジェクトにセッションを渡すことができ:
$session = new Session;
$user = new User($session);
$article = new Document($session);
を両方$user
と$article
インスタンスは現在同じセッション・インスタンスを共有します。詳細については
、見て次のプレゼンテーション:
いいえ、 'MyFactory ::のgetSession()'あまり意味があり、はい、使用していません静的なクラスは問題ありません。 – Ryan
私はあなたがとても傾けられていれば、あなたは複数のセッションをジャグリングできると思います。 –
なぜ複数のセッションが必要ですか? – Undefined