特定のクラスのみがそのインスタンスを作成できるように、パブリック クラスのコンストラクターへのアクセスを制限したいが、すべてのクラスがそのインスタンスを使用できるとします。
Java では、これをアーカイブする 2 つの方法を知っています。
- コンストラクターで
public static
内部クラスをprivate
作成し、外部クラスでインスタンス化します。 - クラス コンストラクターをパッケージ プライベートにします (同じパッケージ内のすべてのクラスへのアクセスを制限します)。
ただし、PHP には内部クラスはなく、名前空間 (パッケージに近い) には独自のアクセス修飾子がありません (つまり、パッケージ プライベートはありません)。
では、クラス コンストラクターへのアクセスを保護するにはどうすればよいでしょうか。