PHP中的助手类 - 静态方法与标准函数

时间:2011-08-17 15:54:44

标签: php oop

如果我想在PHP中创建一个Helper类,那么这是最好/最正确的方法?

包含这样的静态方法的Helper类:

<?php
class Helper {

   static function helpThis() {
      // code
   }

   static function helpThat() {
      // code
   }
}
?>

创建一个包含许多函数的PHP文件:

<?php
   function helpThis() {
      // code
   }

   function helpThat() {
      // code
   }
?>

3 个答案:

答案 0 :(得分:3)

我建议创建一个类。

通过这种方式,您可以避免在使用这些功能之前每次都添加include helper.inc.php

另一方面,班级可以是autoloadedHelper::helpThis(),就是这样。

答案 1 :(得分:1)

我想将这些方法放在一个类中总是“更好”。它不仅看起来更好,而且在使用类时,更容易知道每个函数/方法的作用。例如,您可以创建一个主辅助类和几个派生自主类的辅助类。一切都到位,然后清楚地了解它的作用。 ;)

答案 2 :(得分:0)

我可以想到一些很好的理由来选择一个静态方法而不是函数的类。

  1. 更多背景信息。类名本身提供的上下文不仅仅是函数名。如果您尝试使用函数提供相同的信息,则最终会使用非常详细的函数名称。请考虑以下示例:

    UserTemplateHelper::printId($user);
    // ... VS ...
    userTemplateHelperPrintId($user);
    

    人们通常做的是懒惰,所以函数名称通常不像上面显示的那样冗长。这就是为什么你最终可能会提供更少的背景。因此,您的代码可读性较差。此外,如果您想将UserTemplateHelper更改为其他内容,只更改类名而不是使用该前缀的许多函数更容易。

  2. Autoload VS include。 include require 通常会使应用程序更容易出错。它们也很难使用,因为它只是另一种类型。此外,他们确实做的是创建一个维护较少的应用程序,因为你可能最终将包含的传播到处都是一个自动加载。我认为通常最好集中逻辑。

  3. 共享变量。您可能希望稍后在函数之间共享一些变量。通过声明私有静态变量而不是使用难以调试且通常是邪恶的global关键字,这样做更容易。