# :-: 編寫Facade
## 編寫 Facade
剛才在 編寫 Model 章節已經說了,包是希望使用者可以盡量不使用 Model 的,所以這里編寫 Facade,來提供統一的接口。Facade編寫很簡單。
### Permission Facade
```php
namespace think\permissions\facade;
use think\Facade;
/**
* @method static \think\permissions\model\Permissions store(array $permission) store
* @method static \think\permissions\model\Permissions getPermissionBy($permission_id) get by id
* @method static \think\permissions\model\Permissions deleteBy($permission_id) delete by id
* @method static \think\permissions\model\Permissions updateBy($permission_id) update by id
* @method static \think\permissions\model\Permissions getPermissionByModuleAnd($module, $controller, $action)
*/
class Permissions extends Facade
{
public static function getFacadeClass()
{
// 這里使用了配置文件對應的 Model class,所以使用者如果需要擴展并且想要使用包內 model方法的話
// 只需要繼承之后,再將配置文件對應的 model class 修改后,就可以繼續以門面的方式訪問了,這樣可
// 保證統一
return config('permissions.model.permission');
}
```
### Role Facade
```php
namespace think\permissions\facade;
use think\Facade;
/**
* @method static \think\permissions\model\Roles store(array $role) store
* @method static \think\permissions\model\Roles getRoleBy($role_id) get by id
* @method static \think\permissions\model\Roles deleteBy($role_id) delete by id
* @method static \think\permissions\model\Roles updateBy($role_id) update by id
* @method static \think\permissions\model\Roles getPermissions($role_id, $full) get Permissions Of Role
* @method static \think\permissions\model\Roles attachPermissions($role_id) attach permissions to Role
* @method static \think\permissions\model\Roles detachPermissions($role_id) detach permissions of Role
*/
class Roles extends Facade
{
public static function getFacadeClass()
{
return config('permissions.model.role');
}
}
```