在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是否应声明为静态。是否有更好的方法来声明此属性,如果是,如何从此类的函数中调用它?
答案 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');
}
}