你如何组织一个类中的方法和属性?

时间:2010-07-29 19:51:21

标签: php class

假设您正在声明一个包含所有铃声和口哨的类 - 构造函数和析构函数,公共,私有,受保护和静态方法和属性,魔术方法等。

你如何在逻辑上组织这一切?例如,您是否通过可见性对事物进行分组?你是否按字母顺序排列方法名称?你把魔术方法组合在一起吗?你把构造函数放在开头,将析构函数放在最后吗?

显然这是主观的,但我很想知道对别人有用的东西,或者在阅读别人的代码时你觉得容易导航的东西。

8 个答案:

答案 0 :(得分:26)

  1. 常量
  2. 可见性字段(公共,受保护,私有)
  3. 构造函数和析构函数以及其他魔术方法
  4. 可见性方法(公共,受保护,私有)
  5. 如果我有时间,我会尝试按字母顺序排列; P

答案 1 :(得分:8)

像这样

class Foobar 
{
      var $public;

      function __construct(....

      function public_method_1()...
      function public_method_2()...

      //

      var $_priv;

      function _private_1()...
      function _private_2()...
 }

基本上,最有趣的(对于类用户)首先是

答案 2 :(得分:2)

我首先放静态变量,然后是类变量。那么我通常把构造函数作为第一个方法(或者如果它是一个带有“init”的类或者一个框架调用的其他方法,我会把它放在顶部)

之后我尝试将相关方法组合在一起以便进行最少的滚动,但一段时间后它会变得混乱。

拥有像Eclipse + PDT或vsPHP这样的IDE会向您显示类的大纲视图,您可以根据需要对方法进行排序,这样您就不必去寻找代码。

答案 3 :(得分:1)

我知道这是一篇古老且被遗忘的帖子,但今天我遇到了我的班级成员,这里是我的五美分:

abstract class Stdclass
{
   public const CONSTANT;
   protected const CONSTANT;
   private const CONSTANT;

   use TraitA, TraitB;

   public static $property;
   protected static $property;
   private static $property;

   abstract public static function method(); 
   abstract protected static function method(); 

   public static function method() {} 
   protected static function method() {} 
   private static function method() {}

   final public static function method() {} 
   final protected static function method() {} 

   public $property;
   protected $property;
   private $property;

   abstract public function method(); 
   abstract protected function method();

   public function __construct() {} 
   public function __destruct() {}
   public function __otherMagicMethods() {}

   public function getterMethod() {}
   public function setterMethod() {}
   public function method() {}
   final public function method() {}

   protected function method() {}
   final protected function method() {}

   private function method() {}
}

答案 4 :(得分:0)

就个人而言,我把类变量放在顶部(通过可见性),然后是魔术方法,然后是公共方法,然后是保护/私有方法。它是大多数经常编辑到最不经常编辑的事物的排序组合,并且使重要方法中显而易见的事情变得明显(这就是为什么魔术方法比通常更高的原因)。

答案 5 :(得分:0)

我想我在一个函数中所做的唯一一种组织就是将__construct放在前面,然后在类中增长而没有任何组织,但我通常从非公共函数开始并完成公共函数

答案 6 :(得分:0)

就个人而言,我有顶级的常数;属性接下来,尝试维护私人,受保护,然后公共。对于这些方法,我首先选择getter和setter,然后将其他内部方法松散地组合在一起,然后使用__construct和其他魔术方法,使用任何静态方法....但我很少会完全保持这种顺序。

答案 7 :(得分:0)

说实话(这听起来像是不好的做法)我没有做任何努力以任何特定的顺序安排它们。 使用Visual Studio和Resharper意味着它在很大程度上是不必要的。