2016-10-11 4 views
0

Мне нужно знать, какой метод был вызван в классе PHP, и обрабатывать его в пределах одного класса, если это возможно.Проверьте, какой метод был вызван в PHP-классе

Пример

class Pages 
{ 

    public function firstPage() 
    { 
     return 'First Page'; 
    } 

    public function secondPage() 
    { 
     return 'Second Page'; 
    } 

    public function thirdPage($details) 
    { 
     return view('ThirdPage')->with('details', $details); 
    } 

    //This will handle everything that happening. 
    public function handler($methodExecuted) 
    { 
     // $methodExecuted will hold what method was accessed. 
     echo 'Page ' . $methodExecuted . ' Was accessed'; 
    } 

} 

Что-то похожее на это, я не уверен, если эта функция доступна для PHP, метод «обработчик» будет просто хранить данные в базе данных в реальном приложении, но здесь его просто повторяя некоторые данные.

Есть ли у PHP метод магии или что-то, что достигает этого? единственная вещь, с которой я столкнулся до сих пор, - это метод __call, но это не делает то, что хочет идентификатор, хотя его вид на линиях.

+1

Большие вопросы, почему вы хотите это сделать, какова конечная цель узнать, какой метод вызывается. Фактически, вы уже должны знать, какой метод был вызван, так как именно вы написали код. Поэтому, если вы могли бы объяснить немного больше о том, что именно вы хотите достичь, а не только о том, что, по вашему мнению, является решением вашей проблемы, мы могли бы помочь вам. – ChristianF

+0

@ChristianF Мне нужно знать, какая страница возвращается, поэтому я могу добавить ее в журнал динамически в качестве альтернативы написанию кода для нового журнала внутри каждого отдельного метода. У меня есть 50+ методов, и кажется, немного утомительно писать код снова и снова, как и в большинстве языков программирования, когда вы начинаете повторять себя, язык имеет что-то, что может свести к минимуму повторяющийся процесс. По-видимому, PHP все равно не в этом конкретном случае. –

+0

Языки не имеют способов уменьшить дублирование. Программисты. Если вам нужно добавить журнал, вы должны использовать отдельную службу, которая отделена от логики вашего контроллера. Конечно, у вас есть какой-то резольвер, который знает, какой объект 'Page' и какой метод' page() 'вызывать. Этот резольвер, где вы должны заносить эту информацию. –

ответ

0

Нет, в PHP нет волшебного метода, который вызывается перед каждым вызовом метода. Вам придется вызывать этот метод вручную из каждого метода.

+0

Я боялся этого, поэтому ive получил более 50 страниц, это будет считаться хорошей практикой, чтобы сделать новую строку кода для каждого метода, который возвращает страницу? –

+0

Или перепишите код для использования метода '__call'. Или вызовите метод 'handler' из того же места, где вы вызываете другие методы. @ChristianF задал очень хороший вопрос в комментарии к вашему вопросу, и вы должны задать этот вопрос себе. –