2010-08-15 51 views
0

我正在写一个非常基础的php应用程序,并且创建了一大堆函数来完成各种事情,例如, display_user_nav(),display_user_list()等。我想要一种合理的方式来组织这些。我真正需要的是类似于ruby模块的东西,但我一直无法找到一个相当于php的东西。我也觉得,从编程的角度来看,他们不属于类,因为我已经有一个用户对象来包含一个用户的信息,并且不想创建和存储一个新的对象,只要我想使用它们。PHP函数组织

我现在正在做的事情:

display_user_table() 
display_user_edit_form() 

我有种想能够做到(有点像红宝石):

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

任何建议表示赞赏。

回答

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() { /* ... */ } 
} 
+0

谢谢。我非常业余与PHP,所以我真的不知道如何实现名称空间。这正是我正在寻找的。我也明白,理想情况下,我应该使用更类似MVC的结构来保持组织结构,但坦率地说,该项目很小,不值得付出努力。 – Dave 2010-08-15 18:32:58

0

怎么样抽象类!?或单身?那是一个很好的方式来组织你的代码

0

那么你可以打破他们出到辅助类,例如:

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

佣工的架构可以更complexx和实施流体界面或东西的效果取决于你的课程如何运作。

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

0

除了一个处理所有HTML输出的模板外,不应该有这样的函数。

问题是你正在以一种错误的方式使用函数:使一个函数只能重复一次以上的操作。
不要只使用一个函数进行单一操作。