# :-: 编写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');
}
}
```