PHP函数组织

时间:2010-08-15 18:14:32

标签: php module organization code-organization

我正在编写一个非常基本的php应用程序,并创建了一大堆功能来执行各种操作,例如: display_user_nav(),display_user_list()等。我想要一种以逻辑方式组织这些的方法。我真正需要的是像ruby模块,但我还没有找到一个PHP等价物。我也觉得从编程的角度来看,它们不属于类,因为我已经有一个User对象来包含一个用户的信息,并且不希望每当我想使用它们时都必须创建和存储一个新对象

我现在在做什么:

display_user_table()
display_user_edit_form()

我希望能做些什么(有点像Ruby):

User_Functions::Display::Table()
User_Functions::Display::Edit_Form()

任何建议都表示赞赏。

4 个答案:

答案 0 :(得分:2)

如果您使用的是PHP 5.3+,则可以使用namespaces

因此,您可以命名您的函数(命名空间分隔符为\):

User_Functions\Display\Table
User_Functions\Display\Edit_Form

然而,看起来使用一个类似乎并不是一个坏主意。如果您认为显示函数不属于User(许多人认为序列化方法在目标对象中没有意义),您可以创建这样的类:

class DisplayUser {
    private $user;
    function __construct(User $u) { $this->user = $u; }
    function table() { /* ... */ } 
    function displayForm() { /* ... */ } 
}

答案 1 :(得分:0)

抽象类怎么样??还是单身人士?这是组织代码的好方法

答案 2 :(得分:0)

你可以把它们分成辅助类,例如:

$helper = new UserHelper();
$helper->renderTable($user);
$helper->renderForm($user, 'edit');

帮助程序的体系结构可能更复杂,并且可以实现流畅的界面或类似的效果,具体取决于类的运行方式。

另一种方法可能是将装饰器附加到对象以执行这些功能。

答案 3 :(得分:0)

除了一个负责所有HTML输出的模板之外,根本不应该有这样的功能。

问题是你以错误的方式使用函数:只使一个函数重复多次操作。
不要只使用一个功能。