1

在 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 声明为静态。有没有更好的方法来声明这个属性,如果是这样,如何从这个类的函数中调用它?

4

2 回答 2

0

也许我在这里遗漏了一些东西,但是为什么要将 php 魔术静态NAMESPACE的值放入您自己的变量中?为什么不直接使用NAMESPACE呢?

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

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

于 2014-06-26T02:07:30.947 回答
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');
    }           
}
于 2018-12-29T07:54:59.463 回答