【问题标题】:Do you prefix your classnames? [closed]你给你的类名加前缀吗? [关闭]
【发布时间】:2010-02-25 14:43:17
【问题描述】:

简单的问题:您是否在您的 PHP 类(例如您的库类)前加上您的公司名称?

示例:Zend 以“Zend_”为所有内容添加前缀,但这是正常的,因为这是一个框架(因此他们希望避免冲突)。 我应该为我公司的图书馆课程做同样的事情吗?我会遇到冲突吗?

我认为没有前缀(更短的名称)更容易使用,但是有前缀是一个好习惯吗?

【问题讨论】:

    标签: php coding-style


    【解决方案1】:

    PHP 有 namespaces。您应该使用它们,而不是在所有内容前加上名称。

    至少,当您的开发人员不必继续输入 MyFrameworkName... 即可开始使用您的某个类时,他们会感谢您。

    【讨论】:

    • 前缀类不是匈牙利符号的一部分。
    • 应避免使用不正确的匈牙利符号。然而,真正的匈牙利语可能会很有帮助,尤其是在 PHP 这样的语言中。
    【解决方案2】:

    出于多种原因,我总是为我的课程添加前缀

    • 5.2 仍将存在几年
    • 5.3 的命名空间非常丑陋,我无法使用它们而不感到恶心
    • 嘿,Apple 也这样做(NSString、CFXMLParser 等);))

    说真的,最好完全避免使用显式的类名。摆脱静态并使用依赖注入而不是new - 这样您在类命名方面的痛苦就会少得多。

    【讨论】:

    • 5.2不是问题,没有实际限制,只是理论上的问题。
    【解决方案3】:

    是的,我愿意。我无法切换到命名空间 b/c 我的大多数客户都在运行 PHP 5.3。如果我能保证避免命名冲突,我不介意多输入一点。尤其是当我在现有库之上使用自己的自定义库时。

    【讨论】:

      【解决方案4】:

      没有。

      PHP 具有命名空间,因此您可以拥有具有相同名称的类,只要它们位于不同的命名空间中。

      【讨论】:

        【解决方案5】:

        我在我的类名前面加上它所在的文件夹名称

        <?php
            // filename would be "ClassName.php" in directory "directory"
            class directory_ClassName{
        
            }
        

        这样使用 __autoLoad 非常容易

        function __autoload( $class_name ){
            $file = explode( "_", $class_name );
            $file =  'app/' . implode( '/', $file ) . ".php";
            require_once( $file );
        }
        

        意味着你永远不必加载你的类,这一切都是自动完成的

        【讨论】:

        • 我曾经这样做,然后我开始将所有内容转储到一个目录中......如果我的课程少于 100 个。没有什么比输入“cd”更让我生气的了:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2015-10-06
        • 2010-11-21
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多