1

我非常愿意使用 Java 包命名约定

com.website.app.whatever

但我不确定在 PHP 中执行此操作的最佳方法。

选项1:

创建目录结构

com/
    mysite/
          myapp/
               encryption/
                         PublicKeyGenerator.class.php
                         Cipher.class.php
               Xml/
                         XmlHelper.class.php
                         XmlResponse.class.php

现在这就是 Java 的做法,它使用文件夹来组织层次结构。然而,这在 PHP 中有点笨拙,因为没有对它的原生支持,而且当你移动东西时,你会破坏所有包含。

选项 2

使用句点为包命名类,因此名称就像在 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

这里唯一真正的缺点是所有类都在一个文件夹中,这可能会让大型项目感到困惑。

征求意见,哪个是最好的还是有其他更好的选择?

4

4 回答 4

1

这不仅取决于您将拥有多少课程,还取决于您将拥有多少网站和应用程序。如果您有多个站点或应用程序,那么拥有文件夹会更合乎逻辑,这样您就不会感到困惑。如果您只有几个类(比如少于 20 个),将它们全部放在一个文件夹中可能更合乎逻辑。根据上面的类的种类和你想要的详细程度,我会继续使用目录,这样你以后就不会说“天哪,我希望我使用过目录”。然后,您最终编写了只会使用一次的无用程序,以便您可以更改文件结构。

于 2010-06-13T16:28:26.260 回答
1

我会建议选项 1,因为在该布局中特别是代码的分离,这最终将成为一个非常易于管理和灵活的系统。

于 2010-06-13T16:30:06.583 回答
1

您可以遵循 Zend Framework 标准,例如

带自动加载的选项 1

新的 App_Encryption_Cipher

自动加载魔术回调中将_替换为'/'并进行进一步检查(文件存在?文件名中的垃圾正在寻找?符号?)

然而,这在 PHP 中有点笨拙,因为没有对它的原生支持,而且当 >> 你移动周围的东西时,你会破坏所有包含。

取决于您如何计划/设计您的应用程序。无论如何,在重构方面都没有逃脱 :)

我知道您已经习惯了 java 命名约定,但是如果您很好地执行了 (new com_mysite_myapp_encryption_cypher) 之类的操作,那么一直写会变得很痛苦

于 2010-06-13T16:40:45.680 回答
1

我一直更喜欢文件夹较少的前缀文件,因此导航较少,但这只是我个人的喜好。

如果您认为以后可能要更改它,可以创建一个中央包含脚本,例如:

<?php do_include('encryption_cypher'); ?>


   function do_include($file){
    if($file== 'encryption_cypher')
        include('class/app/someotherfolder/encryption/cypher.php');

    }

然而,从长远来看,这只是一团糟,所以选择两害相权取其轻。

于 2010-06-13T16:42:12.187 回答