使用带有array_map()的命名空间

时间:2014-06-26 01:27:58

标签: php oop namespaces array-map

在PHP Web项目中,在classes文件夹中有两个子文件夹,如下所示:

项目\类\应用

项目\类\效用

实用程序子文件夹中有一个名为Cleanse的类。以下是该类中部分代码的副本:

namespace classes\utility;

class Cleanse
{
    # ATTRIBUTES
    protected static $_ns = __NAMESPACE__;   

    # METHODS
    public static function escape($values)
    {
        return is_array($values) ?
                    array_map(self::$_ns.'\Cleanse::escape', $values) :
                    htmlentities($values, ENT_QUOTES, 'UTF-8');
    }           
}

我想知道$ _ns是否应声明为静态。是否有更好的方法来声明此属性,如果是,如何从此类的函数中调用它?

2 个答案:

答案 0 :(得分:0)

也许我在这里遗漏了一些东西,但你为什么要把php magic静态 NAMESPACE 的值放到你自己的变量中?为什么不直接使用 NAMESPACE

否则,您可以使用private,因此只有此类可以访问该变量并将其用作 $ this-> _ns,但实际上,我只会使用 NAMESPACE 变量本身。

如果您决定静态声明它,请使用self :: _ ns。

答案 1 :(得分:0)

这是一个简单的解决方案,只需使用array_map([static::class, 'escape'], $values)而不是__NAMESPACE__

class Cleanse
{ 
    public static function escape($values)
    {
        return is_array($values) ?
                    array_map([static::class, 'escape'], $values) :
                    htmlentities($values, ENT_QUOTES, 'UTF-8');
    }           
}