PHP动态与静态方法命名约定

时间:2018-02-09 20:42:55

标签: php methods dynamic static naming-conventions

我正在尝试确定用于数据库派生类的最佳命名约定。我经常遇到我希望同时具有类似功能的静态和动态方法的情况。

例如说我有公司课。每家公司都有各种产品。在我的公司课程中,我希望能够检索一家或多家公司提供的所有产品,或者在公司和产品之间设置关联。

class Company {

     /** STATIC FUNCTIONS **/

     public static function GetProductIds($company_ids = array()){

          $company_ids = (array)$company_ids;

          // retrieve associated product ids from database

          return $product_ids;

     } // GetProductIds()


     public static function SetProductIds($company_ids = array(), $product_ids = array()){

          $company_ids = (array)$company_ids;
          $product_ids = (array)$product_ids;

          // insert company/product associations into database

          return true;

     } // SetProductIds()


     /** DYNAMIC FUNCTIONS **/

     public function ProductIds($product_ids = null){

          if($product_ids){
               return self::SetProductIds($this->company_id, $product_ids);
          }

          return self::GetProductIds($this->company_id);

     } // ProductIds()


} // CLASS Company

在此示例中,调用动态ProductIds()方法允许我使用相同的方法设置或获取数据。但是,我可能会遇到动态方法没有设置功能的情况。

是否有人建议这是否是可接受的策略?如果不是,你如何设置你的方法来处理这些情况?

1 个答案:

答案 0 :(得分:0)

我决定反对以这种方式设置我的课程。 Barmar在他的评论中指出,反对它的主要原因是动态方法的名称没有明确地描述它的作用(因为它可以设置或获取)。我会将我的get / set方法分开以保持清晰。

  

为您的方法命名,描述它们的作用。不要担心静态与动态的命名约定。担心私人与公众之间的关系 - 保存到数据库的方法是否真的需要公开?它看起来像是其他方法的内部实用程序。 - 巴马尔

在命名静态方法时,我还将使用类似BulkGetProductIds()的东西,我需要根据多个ID获取数据。