Я пытаюсь создать контроль доступа на основе ролей в нашей PHP-среде. Структура основана на архитектуре MVC, поэтому каждый путь работает на /controller/action/param
. Мы можем получить контроллер и действие при инициализации и сохранить их в переменных, $ controller, $ action. Теперь моя идея заключается в том, чтобы использовать класс, чтобы проверить разрешения этого действия, как:Получить все методы
Auth::permissions($controller, $action);
Теперь я надеюсь, что я мог бы каким-то образом создать скрипт, который будет найти все публичные методы контроллеров внутри/модулей/папки. Таким образом, я мог бы просто запустить скрипт, и он обновит все действия контроллера в виде списка в базе данных, откуда мы получим разрешения на роль. Таким образом я мог бы избежать вставки всех действий контроллера вручную. Получение всех контроллеров очень легко, как структура папок как:
/modules
/controller
controller.php
Так что я могу просто найти все подкаталоги модули и добавлять .php в конце концов. Мой вопрос в том, что я могу каким-то образом получить общедоступные методы файла?
class Example extends Controller {
public function main() {
return 'foo';
}
}
Таким образом, я мог хранить это в базе данных
example | main | role_id
http://php.net/manual/en/class.reflectionclass.php Не совсем все функции из файла, но вы получите все функции из класса. с атрибутами и т. д. –
Файл не имеет методов. У него нет действий или контроллеров. –
@TanuelMategi http://php.net/manual/en/function.get-class-methods.php нет необходимости в классе отражения для получения имен общедоступных методов. –