【发布时间】:2020-09-19 09:09:34
【问题描述】:
通过遵循 OOP 方法,我将可重用的方法编写到特征中,而不是创建一个普通的帮助文件。这样我就可以有组织地控制访问。为此,我创建了各种traits,例如permissions、auth、settings、helpers 等。
使用 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;
}
}
身份验证特征
特征认证{
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;
}
}
}
【问题讨论】:
-
能否请您展示一个您尝试过的简短示例,它可以帮助展示您是如何做的,有时可以帮助其他人更好地了解正在发生的事情。
-
@NigelRen 我已经用一些示例代码更新了我的问题。
标签: php traits static-methods public-method