2011-03-16 45 views
0

我有一个类user,当启动update.php时,它在/update/user.php中启动。此类处理用户相关查询的数据库,如编辑,删除,创建等需要关于命名PHP中的2个类的建议

我在创建一个新的类/src/user.php又称user将在数据库上执行用户相关的查询的过程,但只有检索它们(并输出)它们。如检索他们的用户ID,用户组,电子邮件等。

我发现需要命名它们两个user,但显然当检索到update.php时会出现冲突。你能给出什么建议来命名这两个不同的类,尽管它们在我的库中是分开的区域,但执行类似的操作?

使用PHP 4

+2

在任何情况下,您都不应该在开发人员认为2年以上死亡的语言中进行新的开发。也就是说,它也不会以任何有意义的方式影响这个问题的答案... – Charles 2011-03-16 07:16:59

+0

我很想升级到PHP 5. – Jared 2011-03-16 07:22:39

+0

你可能有令人信服的理由,为什么你不能切换到5,但重申因为这真的很重要:PHP 4是一匹死马,甚至没有获得安全修补程序,并且具有比5更有限的OOP功能。2011年从零开始学习PHP 4非常不寻常。如果你的雇主/客户/无论有一个遗留的生产应用程序运行在4,他们真的应该考虑将其切换到5 - 尤其是如果它是面向公众的。通常不那么痛苦。 – 2011-03-16 07:32:41

回答

2

如果他们都查询,但只有一个人写道,那么我会建议像。

UserWrite 
UserRead 

UserCreate 
UserAccess 
+0

我已经考虑过这个,但是'UserWrite'只会在我想对用户执行一个操作时发起,这比'UserRead'要少得多。这就是为什么我有这个泡菜。我一定会考虑你的建议。 – Jared 2011-03-16 07:24:48

+0

我选择在'user write'类中添加前缀,并且暂时将'user read'类保留为'user'。感谢您的建议。 – Jared 2011-03-16 07:46:39

+0

其实,“用户写入”有可能成为“更新”的“子类”吗?所以如果我想创建一个新用户,我会调用'$ update-> user-> create'而不是'$ user-> create'? – Jared 2011-03-16 07:50:27

0

我明白你的问题,但你认为你真的要创建2个不同的类来执行相同的操作?你可以在/src/user.php中创建它,显然可以在任何你想要的地方使用它。你应该以这样的方式在这个类中创建方法,以便在这两个问题中使用它们。即检索信息并进行更新。

+0

不是。我将两者分开,以使它们明显分离,因为虽然它们在相同的事物上运行 - 用户 - 它们执行“相反”的功能。 – Jared 2011-03-16 07:28:23

2

为了呈现的替代,整个命名结构代替只是建议名称。 Zend Framework和其他库具有与文件在树中的位置相对应的命名结构。半虚构的例子:

Class name    Is in 
----------------------------------------------------------- 
Zend_Auth    /Zend/Auth.php 
Zend_Auth_Adapter  /Zend/Auth/Adapter.php 
Zend_Auth_Helper   /Zend/Auth/Helper.php 
Zend_Auth_Adapter_HTTP /Zend/Auth/Adapter/HTTP.php 

所以下划线是目录分隔符,名字的最后一个元素是PHP文件的名称。

这样做的主要原因是它使autoloading非常容易,但它也是按任务排序库的好方法。另外,当你看到代码中某处使用了某个类时,你总是可以告诉哪个文件位于这是一个很大的优点。

在你现在使用的方法中,我看到的问题是“src”对于那个类实际做了什么很不清楚。也许一个更有说服力的名字(比如“工具”或“查询”)会是顺序的,或者是主要的用户类,并且应该被命名为“用户”?

应用上述例子到结构可能导致

Class name     Is in 
------------------------------------------------------------ 
MyAppname_User_Update  /User/Update.php 
MyAppname_User    /User.php 

哦,有什么@Charles说,在他的评论。你绝对不应该再为PHP 4开发。它是一个死的版本,并且是no longer supported.

+0

表示同意,ZF的命名约定确实很不错,一个采用 – add9 2011-03-16 07:24:30

+0

有趣的命名约定。我根本就不会考虑它。我拒绝使用它,因为我处于PHP的(很长)学习阶段,而且我的库的文件结构经常发生变化。 – Jared 2011-03-16 07:27:21

+0

@Jazza我知道你的意思,够公平的。 – 2011-03-16 07:32:24

0

在OOP中,你的update.php被称为BaseDAO.php,而user.php被称为UserDAO.php(数据访问对象)。但是因为你不使用OOP,所以我猜想use可以将它命名为BaseService.php和UserService。php

0

我建议你创建一个类来创建,编辑,删除和检索与用户相关的记录。然后管理用户角色以限制对方法的访问,而不是为一个对象类创建两个单独的类。

与现实世界相比的解释。

比方说,我们有班车。当具有机械角色(或机械师)的用户使用该车类时,他将能够访问诸如repair(), openHood()之类的方法,其中当具有驾驶角色(或驾驶员)的用户将访问方法drive()

在这种情况下,创建CarMechanic类和CarDriver类也是非常不合适的。

我想我提出了自己的观点。