Выполнение действия при вызове всех методов в классе

admapc

Новичок
Нужно вызывать один и тот же статический метод при выполнении любого метода в классе передавая в качестве аргумента его имя.
Пример
PHP:
class A {
    public static function a()
    {
        B::a(__FUNCTION__);
    }
    public static function b()
    {
        B::a(__FUNCTION__);
    }
   
    .....

    public static function z()
    {
        B::a(__FUNCTION__);
    }
}
Как вынести вызов метода что бы не писать каждый раз одно и тоже
 

admapc

Новичок
Нужно организовать права доступа в laravel. Считываем методы. Ставим чикбокс. А при вызове проверяем есть доступ или нет.
Сall срабатывает только если метода не существует. Да и в некоторых случаях нужно возвращать объект который должен быть возвращен в этом методе.
В итоге получается две строчки кода в каждом методе.

А помню была возможность отслеживать события вплоть до изменения работы циклов внутри определенных функций.
Добавлять непосредственно в начало или конец метода любые строки кода. Или это не в php или приснилось.
 

AmdY

Пью пиво
Команда форума
Зачем тебе методы, ты же должен права на роуты выставлять
Entrust::routeNeedsRole( 'admin/advanced*', array('Owner','Writer'));
Ну и делать такие вещи нужно через Event
http://laravel.com/docs/events
 

admapc

Новичок
Event бесполезная возможность. Тоже самое что просто вызвать другой статический метод.
В каждом методе нужно прописывать возбуждение событие передавая название функции.
sentry confide+entrust мне не нравятся.

По поводу прав на роуты. Разбить все ресурсы на отдельные это не выход
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А я накостылил с базой данных, права сделал на основе роутов, есть проверка по ролям и отдельным правам, которые можно просто давать юзеру. ^_^
 

admapc

Новичок
вот и я так же хочу но без костелей:) Есть ресурс, есть роль или пользователь, и есть массив его прав, но что бы проверить имеет он права или нет нужно или разбить ресурс на отдельные роуты или писать одно и тоже в каждом методе передавая его название
Код:
Route::resource('posts','PostsController');

[
    'posts_index'  => true,
    'posts_edit'    => false,
]
 

флоппик

promotor fidei
Команда форума
Партнер клуба
вот и я так же хочу но без костелей:) Есть ресурс, есть роль или пользователь, и есть массив его прав, но что бы проверить имеет он права или нет нужно или разбить ресурс на отдельные роуты
1. У контроллера можно определить свои фильтры в конструкторе через ->beforeFilter
2. Фильтр можно применить к группе роутов Route::group
3. Фильтр можно применить к группе роутов через Route::when
4. У контроллера есть метод callAction, который можно переопределить, и в котором тоже можно выполнить произвольный код до вызова метода.
 

admapc

Новичок
Определяем какой route сработал
Route::current()->getName()
Route::current()->getActionName()

Вызываем в
Route::group один для всех без параметров.
Event illuminate.query пишем в статическую переменную и проверяем ее существование

Отслеживания события в php о котором я писал выше это я с чем то перепутал? нету такого?
 
Сверху