Есть ли какая нибудь разница между следующим кодом
Для примера возьму add_action хук из wordpress
function example(){
echo "Text";
}
add_action('action', 'example');
И вот этим кодом
function example(){
?>
<h1>Text</h1>
<?php
}
add_action('action', 'example');
Есть ли какие-нибудь подводные камни в использовании второго вариатна? Или это просто одна из возможностей
Понимаю что вопрос ужасно нубский, но все же хотелось бы узнать чтобы в дальнейшем избежать таких неточностей
Очень удобно использовать второй вариант когда нужно запихнуть много html кода в функцию, да и результат одинаковый, но я не уверен насколько это правильно так делать
Это валидная PHP функция:
function example(){
?>
<h1>Text</h1>
<?php
}
Пример работы.
Оба способа приемлемы, выдают абсолютно одинаковый результат. Применение определяется удобством написания программы. Когда надо выдать много html кода, используют второй вариант.
но все же хотелось бы узнать чтобы в дальнейшем избежать таких неточностей
С точки зрения правильности кода - всё OK. А вот с точки зрения любой CMS - абсолютно не верно прописывать контент в файлы.
Очень удобно использовать второй вариант когда нужно запихнуть много html кода в функцию
Если у вас много html кода - генерируйте его с помощью циклов (разумеется, насколько это возможно). Или сохраняйте ваш html код в отдельный файл, который подключайте прямо в тело функции.
Если у вас в пользовательской функции образовалось множество строк кода - задумайтесь над тем, что бы разбить эту функцию на две (или более) с целью её сокращения.
Если в вашей функции выполняется два действия - разделите их по отдельности (например, одна функция пишет текст в файл, другая - читает из файла, и т.п.) Это так же позволит давать адекватные названия пользовательским функциям.
В принципе, оба ваши варианта не правильны с точки зрения функций, т.к. ни в первом случае:
function example(){
echo "Text";
}
ни во втором:
function example(){
?>
<h1>Text</h1>
<?php
}
из функции ничего не возвращается. По сути, это не функции (хотя они и выглядят внешне функциями), а процедуры (поправьте меня, если я где-то ошибся). Правильно было бы записать функцию с оператором возврата значения return:
function example(){
return "Text";
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей