php - 哪个是命名空间和类的最佳方式

标签 php namespaces naming-conventions classname

1) 命名空间 "Domain\Customer" 带有类 "Model"

namespace MyDomain\Customer;
class Model { }
class Repository { }

namespace MyDomain\City;
class Model { }
class Repository { }

2) 命名空间 "MyDomain" 有一个类 "CustomerModel"

namespace MyDomain;
class CustomerModel { }
class CustomerRepository { }

namespace MyDomain;
class CityModel { }
class CityRepository { }

3) 命名空间 "MyDomain\Customer""CustomerModel"

namespace MyDomain\Customer;
class CustomerModel { }
class CustomerRepository { }

namespace MyDomain\City;
class CityModel { }
class CityRepository { }

或者……

我们当前的环境使用以这种方式包含文件的 PHP 自动加载功能

$o = new MyDomain\Customer\Model.php

将加载文件

MyDomain\Customer\Model.php

实际上,在我工作的地方,我们使用示例 #1 导致所有文件都命名为 Model.php。如果不在 Eclipse IDE 中查看完整路径,就很难知道打开了什么模型。

最佳答案

类名应该表达它们所代表的内容。一个名为 Model 的类听起来像是某些模型的通用类。 CustomerModel,相反,表示它是客户的模型。 Customer 在脱离上下文的情况下也没有明确定义,但在您的特定应用程序中,其含义很明确。所以我建议选择 CustomerModel

如果你只有 ModelRepository 类,那么只为这两个类声明一个完整的命名空间是不好的,尤其是当你要定义两个-类命名空间。也许将模型与存储库分开?

关于php - 哪个是命名空间和类的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595834/

相关文章:

php - mysql查询返回表列的错误数据类型

php - 有没有办法在使用 HTML、JavaScript 和 CSS 构建的 Web 应用程序中识别孤立类?

java - 是否可以使用在其父类(这是内部类)中实现的类?

javascript - E4X:如何向现有 E4X 对象添加默认命名空间

JavaScript:对传递给函数的变量使用相同的名称是好习惯吗?

php - 如何使用 Shift-JIS 和 CP932 创建 SQL 注入(inject)攻击?

php - 使用三元运算符进行引用赋值

javascript - 是否可以在同一页面上运行 2 个不同版本的 ASP.NET Ajax 库?

JavaScript:使用函数参数定义变量名

用于被覆盖的属性和方法的 Python 命名约定