代码之家  ›  专栏  ›  技术社区  ›  alex

使用名称空间划分项目是否是错误做法?

php
  •  1
  • alex  · 技术社区  · 16 年前

    我最近已经了解了PHP中的名称空间,我想知道这样做是不是不好的做法?

    <?php
    
    namespace String; // string helper functions
    
        function match($string1, $string2)
        {
    
            $string1 = trim($string1);
            $string2 = trim($string2);
    
            if (strcasecmp($string1, $string2) == 0) // are equal 
            {
                return true;
            } else {
                return false;
            }
        }
    
    
    ?>
    

    在我将它作为静态方法用于字符串类之前,但这似乎总是 错误的 对我来说…哪个是更好的选择?我想对助手的功能进行分类,并想知道哪种方法更好。

    编辑 那么,如果已经在名称空间中声明了match函数,那么如何访问它呢?我该怎么办 停止 名称空间声明,比如说,如果我在它下面包含一个声明新名称空间的文件,它会自动停止对第一个名称空间的引用吗?如何返回全局命名空间?

    5 回复  |  直到 16 年前
        1
  •  2
  •   Saem    16 年前

    我把它放在一个名称空间。类是在PHP中描述一个类型的,虽然您可能在具有类似名称的类型上操作,但严格来说,它不是同一类型。名称空间只是一种逻辑分组的方法,不管怎样,这就是您使用类来做的事情。您唯一失去的是可扩展性,但正如您所说,它只是静态方法的集合。

        2
  •  2
  •   user42092    16 年前

    如果它们都是与字符串相关的函数,那么让它们成为静态方法没有什么错。

    如果你有一堆全局函数和/或变量,你不想把全局范围搞得乱七八糟,但在类中没有意义,那么名称空间是更好的选择。(我自己的代码中有一个类,它更适合于名称空间)。

    如果您的代码有可能在其他地方被重用,那么最好将所有内容都放在某种容器中,这样就不会在其他人的全局变量上乱涂乱画…

    关于你在那里的编辑:

    • 名称空间绑定到在IIRC中定义的文件。不知道这会如何影响其中包含的文件,但我想它们不是继承的。
    • 你可以通过说 ::trim() .
        3
  •  1
  •   dkretz    16 年前

    因为名称空间对PHP来说是如此的陌生,所以人们已经做了很长一段时间了—创建一个类,添加静态方法,并像使用名称空间一样使用该类。在我看来,你好像在好好考虑它。

        4
  •  0
  •   GEOCHET S.Lott    16 年前

    您将使用类对某个DAT上的某些函数进行分类。比如说,你有一个学生班,里面有学生信息、学生年龄和学生证号,还有一些返回和设置这些数据的方法。

    此外,您将使用名称空间对类进行分类;假设现在您有另一个类来处理这些学生的大学注册,并将其他类单独用于管理课程。就个人而言,我将所有这些类放在一个名为“大学”的类别(即名称空间)下。

    因此,这甚至不是一个坏的实践,而且它在代码中给了您更多的可读性。如果你是在一个团队中工作的话,这对其他程序员来说是不可理解的。

    所以我个人强烈建议你在任何你认为合适的地方使用它们。

        5
  •  0
  •   Bart van Heukelom    16 年前

    理想情况下,最好将函数放在命名空间中。但是,如果您依赖于只适用于类的自动加载,则需要将它们放入一个或多个类中。

    推荐文章