divineomega / thisishowirole
'This Is How I Role' 是一个PHP角色管理系统,可以应用于任何类。
v2.1.7
2018-01-27 00:01 UTC
Requires
- php: >=5.5.9
- rapidwebltd/rw-file-cache: ^1.0
README
'This Is How I Role' 是一个PHP角色管理系统,可以应用于任何类。
安装
您可以使用 composer
来安装此包。只需运行 composer require divineomega/thisishowirole
。
设置
创建表
首先,在您应用程序的数据库中创建一个新的表来存储 TIHIR 角色。您可以使用以下 SQL 片段来创建表。
CREATE TABLE IF NOT EXISTS `tihir_roles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `class_name` varchar(1000) NOT NULL, `foreign_id` bigint(20) NOT NULL, `roles` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
如果您使用 Laravel,您可以使用以下数据库迁移来创建 TIHIR 角色表。
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateThisIsHowIRoleRolesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('tihir_roles', function (Blueprint $table) { $table->increments('id'); $table->string('class_name'); $table->bigInteger('foreign_id'); $table->text('roles'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('tihir_roles'); } }
数据库连接配置
如果您使用 Laravel,TIHIR 将自动使用您为应用程序配置的数据库,因此您不需要在这里做任何事情。我们还将使用 Eloquent 与您的数据库进行通信。
否则,您需要设置一些环境变量,以将 TIHIR 指向您的数据库。以下内容类似即可。如果您使用的框架支持,您可以将此内容放入 .env
文件中。如果不支持,则可以使用 PHP 内置的 putenv
函数。
TIHIR_DB_TYPE=mysql
TIHIR_DB_NAME=tihir_test
TIHIR_DB_HOST=192.168.1.44
TIHIR_DB_USER=tihir_test
TIHIR_DB_PASSWORD=PAMBSHcHssQqpw4A
用法
This Is How I Role 通过增强现有类来工作。这适用于任何 PHP 类,无论是手动创建的类还是 Laravel Eloquent 模型。唯一的要求是类必须有一个可访问的、数字的 id
属性。
您只需在类中添加两条额外的 use
行即可。这可以在下面的示例 User
类中看到。
require 'vendor/autoload.php'; use DivineOmega\ThisIsHowIRole\RolesTrait as Roles; // <-- Line 1 class User { use Roles; // <-- Line 2 public $id = 123; }
这个 User
类现在可以使用 TIHIR 角色系统了。您现在可以使用各种方法来对此类添加、删除或检查角色。下面的片段显示了如何操作角色。
$user = new User; $user->roles->add('can_eat_cake'); $user->roles->add('can_eat_cookies'); $user->roles->remove('can_eat_cookies'); echo 'This user can '; if ($user->roles->has('can_eat_cake')) { echo 'eat cakes... '; } if ($user->roles->has('can_eat_cookies')) { echo 'eat cookies... '; } echo "\n";