PHP可以经常使用(新的自我)来访问静态方法中的公共方法

问题描述 投票:0回答:1

通过遵循OOP方法,我将可重用的方法写入特征,而不是创建普通的帮助文件。这样我就可以有组织地控制访问。为此,我创建了各种traits,例如permissionsauthsettingshelpers

在使用PHP超过七年后,我仍然觉得很多东西要学习。

大多数特征具有私有和静态方法。但是,helpers特性具有所有公共方法。要调用从helpers特征到其他特征的static方法的任何方法,我必须使用(new self)->helper_method()来调用它>

问题:

我想知道经常使用它是否有任何缺点?如果是的,还有什么更好的方法可以访问内部的公共方法静态方法?

示例代码

这是我要做的事的一个例子。

权限特征
trait permissions {


    private static function authorize() {
        $role = ( new self() )->checkUserRole();

        if ( $role == 'ultimate' ) {
            return TRUE;
        }

        return FALSE;
    }

}

auth特性

特征认证{

public function checkUserRole( $userId = FALSE ) {
    $user = $userId ? getUser( $userId ) : getCurrentUser();

    if ( $user ) {
        return $user->role;
    }

    return FALSE;
}

}

UltimatePost类
class UltimatePost {
    use permissions, auth, ...;

    public function __construct() {
        if ( ! self::authorize() ) {
            return FALSE;
        }
    }
}

UltimateMedia类
class UltimateMedia {
    use permissions, auth, ...;

    public function __construct() {
        if ( ! self::authorize() ) {
            return FALSE;
        }
    }
}

通过遵循OOP方法,我将可重用的方法写入特征,而不是创建普通的帮助文件。这样我就可以有组织地控制访问。为此,我创建了各种...

php traits static-methods public-method
1个回答
1
投票

缺点是类的构造函数通常通常应具有

© www.soinside.com 2019 - 2024. All rights reserved.