PHP经常使用(newself)访问静态方法中的公共方法可以吗

PHP经常使用(newself)访问静态方法中的公共方法可以吗,php,traits,static-methods,public-method,Php,Traits,Static Methods,Public Method,通过遵循OOP方法,我将可重用方法写入traits中,而不是创建一个普通的帮助文件。这样我就可以有组织地控制访问。为此,我创建了各种特征,例如,权限,身份验证,设置,助手等等 在用PHP工作了七年多之后,我仍然觉得有必要 要学的东西很多 大多数特征都有私有和静态方法。但是,helperstrait具有所有公共方法。要将任何方法从helperstrait调用到其他trait的static方法,我必须使用(new self)->helper\u method() 问题: 我想知道经常使用它是否有缺点

通过遵循OOP方法,我将可重用方法写入traits中,而不是创建一个普通的帮助文件。这样我就可以有组织地控制访问。为此,我创建了各种
特征
,例如,
权限
身份验证
设置
助手
等等

在用PHP工作了七年多之后,我仍然觉得有必要 要学的东西很多

大多数特征都有私有和静态方法。但是,
helpers
trait具有所有公共方法。要将任何方法从
helpers
trait调用到其他trait的
static
方法,我必须使用
(new self)->helper\u method()

问题:

我想知道经常使用它是否有缺点?如果 是的,有没有比it更好的方法来访问内部的公共方法 静态方法

示例代码 这是我正在尝试做的一个例子

权限特征 身份特征 特征认证{

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

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

    return FALSE;
}
}

终极邮政类 终极媒体类
缺点是类的构造函数通常应该具有必需的参数。如果您的构造函数不带参数,并且实例显然是完全可互换的,那么您首先使用类而不是函数集合的原因就值得怀疑了

如果类需要构造函数参数,则不能随意实例化它们,因为您需要传递所需的参数,而静态方法可能没有这些参数

在您的例子中,您的类只是以一组静态函数调用结束,最后是
getCurrentUser
,因此您似乎根本没有使用OOP


您可能有兴趣更深入地了解这个主题。

能否请您展示一个您尝试过的简单示例,它可以帮助您展示您是如何做的,有时还可以帮助其他人更好地了解正在发生的事情。@NigelRen我已经用一些示例代码更新了我的问题。感谢并感谢您的详细解释。我自己学习PHP,您的反馈对我很有价值。正如我提到的,仍然有很多东西需要学习,特别是在面向对象编程方面。你能给我推荐一些最好的测试代码、工具或网站吗?在那里我可以通过OOP获得更多的专业知识?
public function checkUserRole( $userId = FALSE ) {
    $user = $userId ? getUser( $userId ) : getCurrentUser();

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

    return FALSE;
}
class UltimatePost {
    use permissions, auth, ...;

    public function __construct() {
        if ( ! self::authorize() ) {
            return FALSE;
        }
    }
}
class UltimateMedia {
    use permissions, auth, ...;

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