Расскажите, как была вызвана функция - PullRequest
2 голосов
/ 24 января 2011

Я смотрел на debug_backtrace, но пока он не делает то, что мне нужно.

Мне нужно знать, была ли вызываемая функция 'вызвана' или 'эхо-эд'. Как это:

function hello() {
    //blah blah
}

echo hello(); //echo-ed
hello(); //'called'

Но функция будет делать разные вещи, если ее 'вызывать' вместо 'echo-ed'.

Как бы я это сделал?

Ответы [ 3 ]

5 голосов
/ 24 января 2011

Я почти уверен, что это невозможно. Причина, по которой это не может работать, заключается в том, что «echo» или любой другой оператор, функция или присвоение переменной использует возвращаемое значение вызванной вами функции. Так что если у вас есть следующее:

echo function1();

Что происходит, так это то, что function1 выполняется, а возвращаемое значение передается в echo. Поэтому функция function1 не может знать, что ее возвращаемое значение будет «echo-ed», потому что к тому времени, когда это происходит, функция function1 () уже была вызвана и завершена.

1 голос
/ 24 января 2011

Нет эффективного способа справиться с этим

Обновление: Существует нет способа справиться с этим :)

0 голосов
/ 24 января 2011

два примера, которые помогут вам понять.

function hello(){
  return "Hello!";
}
echo hello(); // prints Hello!


function hello(){
  echo "Hello!";
}
hello(); // prints Hello!
...