是否可以从一个静态变量引用到另一个静态变量(在类内)



PHP类中是否可以从一个静态变量引用到另一个静态变量?

class EmployeeDAO
{
    private static $FIND_ALL = 'SELECT * FROM employee';
    private static $FIND_BY_NAME = self::$FIND_ALL . // This is not allowed!
        ' WHERE employee.name LIKE :name';
}

从 php 5.6 开始,你可以这样做:

class EmployeeDAO
{
    const FIND_ALL = 'SELECT * FROM employee';
    const FIND_BY_NAME = self::FIND_ALL .
        ' WHERE employee.name LIKE :name';
}
声明

为静态的属性不能使用实例化的类对象访问(尽管静态方法可以(。为了与 PHP 4 兼容,如果未使用可见性声明,则该属性或方法将被视为已声明为公共属性或方法。

PHP:静态关键字 - 手动

我不确定这是一种值得赞赏的方法,但我可以这样解决:

private static function sql_findAll()
{
    return 'SELECT * FROM employee';
}
private static function sql_findByName()
{
    return self::sql_findAll() .
        ' WHERE employee.name LIKE :name';
}

最新更新