クラスの中で、static宣言をしているプロパティやメソッドの記述順序


**クラスの中で、static宣言をしているプロパティやメソッドの記述順序で参考になるようなものがあれば知りたい**
のですが、一般的にはどう書くのでしょうか？

**案1.**  
・staticは後  
・プロパティ → メソッド順

[code]

    class Hoge{
      public $a = 1;
      static public $b = 1;
      public function c(){}
      static public function d(){}
    }
    
[/code]

**案2.**  
・staticが先  
・プロパティ → メソッド順

[code]

    class Hoge{
      static public $b = 1;
      public $a = 1;
      static public function d(){}
      public function c(){}
    }
    
[/code]

* * *

また、「public」「private」「protected」なども絡むときは、どういう順番で書いた方が良い、とかあるでしょうか？




phpではないですが、javaに関しては[SunMicroSystems](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141855.html#1852)の規約によると以下の順番とのことです。  
phpも概ねこの通りではないかと思います。

  * javadoc用classコメント
  * class/interfaceの定義
  * (必要なら処理説明コメント)
  * staticメンバの定義 
    * public
    * protected
    * デフォルト修飾子
    * private
  * インスタンスメンバ(staticではないメンバ) 
    * public
    * protected
    * デフォルト修飾子
    * private
  * コンストラクタ
  * メソッド 
    * メソッドに関してはアクセス修飾子順ではなく機能単位でまとめることを優先する

c++の場合はpublic:スコープなどアクセス修飾子毎にスコープがあるので  
アクセス修飾子の入れ子にstatic/instance順ですね。




phpではないですが、javaに関しては[SunMicroSystems](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141855.html#1852)の規約によると以下の順番とのことです。  
phpも概ねこの通りではないかと思います。

  * javadoc用classコメント
  * class/interfaceの定義
  * (必要なら処理説明コメント)
  * staticメンバの定義 
    * public
    * protected
    * デフォルト修飾子
    * private
  * インスタンスメンバ(staticではないメンバ) 
    * public
    * protected
    * デフォルト修飾子
    * private
  * コンストラクタ
  * メソッド 
    * メソッドに関してはアクセス修飾子順ではなく機能単位でまとめることを優先する

c++の場合はpublic:スコープなどアクセス修飾子毎にスコープがあるので  
アクセス修飾子の入れ子にstatic/instance順ですね。

