Как заставить дочерний метод возвращать имя родителя при использовании цепочки методов

Я хотел бы знать, при использовании цепочки методов в PHP, если последний связанный метод, возможно, может вернуть своего родителя.

Вот пример.

class foo
{
    function a(){
        return $this; 
    }

    function b()
    {
        return $this;
    }

    function c()
    {
        return $this; 
    }
}

echo (new foo)->c()->a(); // c

В приведенном выше примере вы можете видеть, что a() должен выводить 'c'. Я мог / сделал это, используя аргументы или статические свойства, но я думаю, можно ли это сделать другим способом, особенно с использованием Reflections, о котором я так мало знаю.


person robue-a7119895    schedule 11.08.2014    source источник
comment
Родно - нет. И если вам это нужно (а также цепочка в качестве основного решения), то пришло время пересмотреть вашу логику и архитектуру. Это просто .. плохо. Это нечитаемое, немасштабируемое и ненадежное   -  person Alma Do    schedule 11.08.2014
comment
Я не думаю, что это так уж плохо. Есть довольно много функций, которые имитируют вышеуказанную логику в контексте класса, как и должно быть для методов.   -  person robue-a7119895    schedule 11.08.2014
comment
Что вы имеете в виду под parent? Возврат ранее вызванной функции? Может быть, объясни немного лучше.   -  person AbraCadaver    schedule 11.08.2014
comment
@AbraCadaver Да. Предыдущее имя функции.   -  person robue-a7119895    schedule 11.08.2014


Ответы (1)


К сожалению, у меня есть -1 за мою помощь, поэтому я не могу комментировать, но я могу написать ответ! :)

Отметьте этот пост:

как получить имя функции внутри функции в PHP? < / а>

и если вы получите ответ, да ... помогите мне :)

person Soley    schedule 11.08.2014
comment
Тебе действительно стоит прочитать вопрос. Это не связано с получением имени функции, это связано с цепочкой и отслеживанием этого - person Alma Do; 11.08.2014
comment
ПОЧЕМУ НЕ ИСПОЛЬЗУЕТСЯ stackoverflow.com/a/1006290/2655623? он содержит ответ. - person Soley; 11.08.2014
comment
Во-первых, потому что это ужасный намек в этом ответе. Во-вторых, потому что не во всех случаях сработает. И в-третьих - потому что - зачем копировать существующий контент? .. - person Alma Do; 11.08.2014