【问题标题】:Is it a good idea to create a static member in a class object and call that member for specific function在类对象中创建一个静态成员并为特定功能调用该成员是个好主意吗
【发布时间】:2011-08-08 13:23:31
【问题描述】:

在类对象中创建一个静态成员并为特定功能调用该成员是个好主意吗?喜欢:

class Users
{
     public static Login(strUsername, strPassword)
     {
          $objThis = new Users();
          ....
     }
}

然后这样称呼它:

Users::Login('admin', 'admin');

或第二种方法:

class Users
{
     public Login(strUsername, strPassword)
     {
          //$objThis = new Users();
          ....
     }
}

然后这样称呼它:

$objThis = new Users();
$objThis->Login('admin','admin');

【问题讨论】:

标签: php optimization static-methods


【解决方案1】:

这些函数在什么时候使用

  • 您不想允许,创建 来自外部的类实例 类,间接地你想做 构造函数私有或受保护。
  • 或者您希望整个请求(一个请求)只允许类的单个实例。为了。例如。用于数据库、文档等的类。

【讨论】:

    【解决方案2】:

    如果你想限制对类的访问,并且不允许它被实例化,第一种方法会很有用。例如:

    class Users {
        private function __construct($strUsername, $strPassword) {
            // this class can now not be instantiated
            // except within itself
        }
    
         public static Login($strUsername, $strPassword)
         {
              return new self($strUsername, $strPassword);
         }
    }
    

    这会强制您的类的用户始终使用静态方法来获取用户对象,如果您总是想限制其使用方式,这可能是可取的。

    与往常一样,这在很大程度上取决于您想做什么。 static 就像一个工具,当它是手头工作的正确工具时,你就会使用它。

    【讨论】:

      【解决方案3】:

      通常应避免使用静态方法 - 它们会使 API 和重构变得复杂。当初始化可能引发异常(从文件读取等)和私有实用程序方法时,我仅使用静态方法作为类构造函数的替代方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-23
        • 1970-01-01
        • 2012-06-08
        • 2020-07-17
        • 1970-01-01
        • 2014-02-17
        • 2021-10-05
        • 1970-01-01
        相关资源
        最近更新 更多