__construct() がパブリック以外で宣言されるような状況はありますか?
もしそうなら、なぜですか?
コンストラクターをプライベートまたはプロテクトにする一般的な例は、シングルトン パターンの実装です。PHP の例については、この回答を参照してください。
クラス内でビルダー パターンを使用するとき、およびクラスの静的ファクトリ メソッドを追加するときも、プライベート コンストラクターを使用します。
どちらも、作成するコンストラクターが多すぎるのを避けるのに役立ち、意味のある名前でコンストラクターを作成するのにも役立ちます。たとえば、次の代わりに:
new Robot(2, 4, 255, 0, 0)
ビルダーで作成できます:
RobotBuilder.withNumberOfArms(2).withColor(255,0,0).withNumberOfEyes(2).build()
ビルダーはクラス内にあるため、ビルダーだけがそのプライベート コンストラクターを呼び出すことができます。
静的ファクトリ メソッドの場合、次のことがわかります。
public static Robot createFourArmedRobot();
public static Robot createBlindRobot();
他の開発者にとっては、カスタム パラメーターを持つ 2 つのコンストラクターよりもはるかに意味があります。(PHPよりもOOPに関連しています)
通常、デザインパターンに関連するシングルトンパターンのプライベートとして __construct() を実行して、詳細を確認するには、このページを参照してください - http://en.wikipedia.org/wiki/Singleton_pattern