【问题标题】:Zend Framework class filenames in windows vs. linuxWindows 与 linux 中的 Zend Framework 类文件名
【发布时间】:2011-07-29 11:20:56
【问题描述】:

背景:我们经常使用 PHP(Zend 框架)开发并托管在 linux 服务器上的 web 应用程序。编程团队可能由使用 Linux 或 Windows 作为本地开发平台的个人组成。

因为 Zend 模型名称被映射到文件名,所以大小写很重要。 程序员可能会写 $this->something,其中“something”是一个模型,它在 linux 服务器上具有“Something.php”的文件名。

他的代码可以在他的 Windows 开发 PC 上正常运行,因为“something”将正确映射到 Windows 上的“Something.php”。但是当上传到 linux 服务器时,代码会中断,因为文件名在 Linux 上是区分大小写的。他应该把代码写成“$this->Something”。

最后我的问题是,如果系统检测到代码中模型名称的大小写与文件系统中实际文件名的大小写不匹配,是否存在即使在 Windows 中也会产生错误的 Zend Framework 配置?

【问题讨论】:

  • 重新标记。 Zend != Zend 框架。
  • 底线是,没有,坚持命名约定!
  • @markus - 我们确实使用命名约定。当程序员打错字(输入小写而不是大写)时,问题就会出现,它仍然可以在 Windows 上静默工作,然后在 Linux 上失败。最好能检测到这一点。
  • @royappa:是的,我们的团队在 Windows 上工作,我们对此没有任何问题。如果您使用支持 Zend Framework 的 IDE,您实际上并没有太多机会打错字……我希望您有一个与 live 相同的登台环境。如果你能发现那里的罕见病例,这还不够吗?
  • @markus:这种情况很少发生(与任何其他类型的错字一样罕见)。是的,我们有一个暂存环境,在该环境中进行了测试,并且在上线之前首先对其进行了测试。我只是希望有一个简单的标志或选项来完全避免这个问题,就像有许多标志用于各种类型的错误检查一样。不过感谢您的好建议。

标签: php zend-framework frameworks


【解决方案1】:

所以最后我的问题是,有没有 Zend Framework 配置将 即使在 Windows 中也会产生错误,如果 系统检测到的情况 代码中的型号名称不匹配 中的实际文件名的情况 文件系统?

我不知道,但是在开发服务器/工作站上的 ZF 副本中添加一些检查非常容易。 ZF 使用 spl_autoload_register 加载类,将类名转换为文件系统位置的所有逻辑都位于 Loader 命名空间中。

HTH。

【讨论】:

  • 谢谢!我希望框架本身可能有一个设置,但如果没有,这是一个很好的建议,可以在哪里实现。
【解决方案2】:

ZF 命名约定

Zend Framework 编码约定规定您应该使用大写名称。 有些约定与 API 文档本身一样重要。

http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

如果一个类名由多个 比一个词,第一个字母 每个新词都必须大写。 连续的大写字母不 允许,例如一个类“Zend_PDF”是 当“Zend_Pdf”是不允许的 可以接受。

类名只能包含 字母数字字符。编号是 允许在类名中,但 在大多数情况下不鼓励。下划线 只允许代替 路径分隔符;文件名 “Zend/Db/Table.php”必须映射到 类名“Zend_Db_Table”。

请注意,您提供的示例是错误的。 但无论如何,请保持您的模型名称全部大写,并且模型的路径也根据 ZF 命名约定大写。

【讨论】:

  • 在定义类和创建文件时,我们确实理解并遵循约定。问题(如果不清楚)是关于如何在 Windows 上检测错误,当类被 INVOKED 时出现拼写错误(小写而不是大写)。
【解决方案3】:

也许像 PHP_CodeSniffer 这样的东西可能会帮助你。

从未尝试过,但据我了解,您可以定义规则来验证您的代码,从而根据您的问题的文件名大小写定义规则。

从我读到的内容中已经定义了一个 Zend 规则集,也许它已经包含了这种规则(或者也可能是 PEAR 规则集)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2012-06-07
    • 2012-08-26
    • 2013-04-12
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多