Могу ли я создать функцию PHP, которую я могу вызвать без круглых скобок?
У меня есть функция, которая эффективно заменяет печать, и я хочу называть ее без круглых скобок, как вызов печати.
# Replace
print $foo, $bar, "\n";
# with
myprint $foo, $bar, "\n";
В Perl вы можете создавать подпрограммы с шаблонами параметров и это позволяет именно такое поведение, если вы определяете подпрограмму как
sub myprint(@) { ... }
Что-нибудь подобное в PHP?
Ответы
Ответ 1
print не является переменными функциями
Потому что это языковая конструкция а не функция, она не может быть с помощью переменных функций
И:
Переменные функции
PHP поддерживает концепцию переменной функции. Это означает, что если имя переменной содержит скобки к нему PHP будет искать функцию с тем же именем, что и переменная оценивается и будет попытайтесь выполнить его. Среди прочего вещи, это может быть использовано для реализации обратные вызовы, таблицы функций и т.д. д.
Ответ 2
Только путем редактирования PHP-базы кода и добавления новой языковой конструкции.
-Adam
Ответ 3
Нет, вы не можете сделать это в PHP.
Печать на самом деле не является функцией, это "языковая конструкция".
Ответ 4
Я искал способ закодировать echoh, чтобы сделать что-то вроде:
echoh "hello";
и получить:
'hello<br>\n'.
Я думаю, что одно решение может определять константу и использовать ее:
<?php
const PHP_BR_EOL = "<br>\n";
echo "Hello" . PHP_BR_EOL;
?>
Теперь я получаю:
Hello<br>
Я знаю, что это требует большего набора текста, но он более удовлетворен примерами в руководстве PHP, и я использую gvim с omnicomplete для сохранения при наборе текста. Также было бы легко выполнить глобальный поиск/заменить PHP_EOL на PHP_BR_EOL.
Ответ 5
Нет, PHP не позволит вам это сделать.