我几乎已经开始使用
的Java包命名约定了com.website.app.whatever
但我不确定在PHP中执行此操作的最佳方式。
创建目录结构
com/
mysite/
myapp/
encryption/
PublicKeyGenerator.class.php
Cipher.class.php
Xml/
XmlHelper.class.php
XmlResponse.class.php
现在这就是Java的用途,它使用文件夹来组织层次结构。然而,这在PHP中有点笨拙,因为没有本机支持它,当你移动东西时,你会破坏所有包含。
使用包的句点命名类,因此名称就像在Java中一样,但都可以在同一目录中使__autoload变得轻而易举。
classes/
com.mysite.myapp.encription.PublicKeyGenerator.class.php
com.mysite.myapp.encription.Cipher.class.php
com.mysite.myapp.xml.XmlHelper.class.php
com.mysite.myapp.xml.XmlResponse.class.php
这里唯一真正的缺点是所有类都在一个文件夹中,这可能会让大型项目感到困惑。
寻求意见,这是最好还是还有其他更好的选择?
答案 0 :(得分:1)
这不仅取决于您将拥有多少课程,还取决于您将拥有多少个网站和应用。如果您有多个站点或应用程序,那么拥有文件夹更合乎逻辑,这样您就不会感到困惑。如果您只有几个类(比如少于20个),那么将它们全部保存在一个文件夹中可能更合乎逻辑。基于上面的类和你想要的详细程度,我会继续使用目录,以便稍后你不要看它并说“Gosh我希望我曾经使用过目录”。然后你最终会编写一些你只会使用的无用程序,这样你就可以改变你的文件结构。
答案 1 :(得分:1)
我建议选项1,因为在那个布局中特别是代码的分离,这将最终成为一个易于管理和灵活的系统。
答案 2 :(得分:1)
您可以遵循Zend Framework标准,例如
带自动加载的Option1
new App_Encryption_Cipher
在autoload魔术回调中将_替换为'/'并进一步检查(文件是否存在?文件名中的垃圾是搜索?符号?)
然而,这在PHP中有点笨拙,因为它没有本机支持,当>>你移动周围的东西打破所有包括。
取决于您计划/设计应用程序的方式。无论如何,在重构方面都没有逃脱:)
我知道你已经习惯了java命名约定,但是如果你做了类似的事情(新的com_mysite_myapp_encryption_cypher),那么写作总是很痛苦
答案 3 :(得分:1)
我一直更喜欢带有较少文件夹的带前缀文件,因此导航较少,但这只是我个人的偏好。
如果您认为以后可能想要更改它,可以创建一个中央包含脚本,如:
<?php do_include('encryption_cypher'); ?>
function do_include($file){
if($file== 'encryption_cypher')
include('class/app/someotherfolder/encryption/cypher.php');
}
然而,从长远来看,这只是一个混乱,所以选择两个邪恶中较小的一个去。