Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100

Как лучше выводить код в функции?

25.03.2019, 09:05. Показов 836. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть функция, которая выводит текст, html код. Часто не более 500 символов.
Как лучше выводить код в функции? У меня есть два варианта.


Вариант 1
PHP
1
2
3
4
5
6
7
8
//Функция
function test_function()
{
echo '<b>Текст</b>';
}
 
//Вызов
test_function();
Все просто и понятно.


Вариант 2
PHP
1
2
3
4
5
6
7
8
9
10
//Функция
function test_function()
{
$code='<b>Текст</b>';
//$code.='Ещё текст, код на вывод и т.д.';
return $code;
}
 
//Вызов
echo test_function();
Более универсально. Но выглядит немного странно т.к. на практике в переменной содержится строка с 500 символами.
Иногда и больше.
Зачем так? Дело в том, что код функции иногда нужно передавать в другие функции.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Функция
function test_function()
{
$code='<b>Текст</b>';
return $code;
}
 
//Функция
function modal_window($window_content)
{
//Код для показа модального окна с переданным в функцию контентом
}
 
//Покажем модальное окно, в котором будет написано '<b>Текст</b>
$window_content=test_function();
echo modal_window($window_content);
Является ли такое накопление кода в переменной и его возврат (return $code) нормальным?
Ведь такой способ более удобен и универсален, чем простое echo. А как с быстродействием?
Как лучше выводить код в функции?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2019, 09:05
Ответы с готовыми решениями:

Как лучше выводить анонсы?
Приветы! Как думаете, анонсы последних добавленных на сайт статей выводить только на главной странице или сквозняком в боковом меню?

Как лучше всего выводить инфу из бд?
я умею выводить информацию из бд в цикле while-do с помощью printf и echo. Но мне нужно использовать php код, чего я в printf сделать не...

Добавить в код любые пользовательские функции (лучше всего - функции ввода/вывода)
Ребят, прошу вас помочь добавить любые две функции, лучше всего если ввод и вывод, но например и за два void input буду очень благодарен...

3
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
25.03.2019, 11:57
Считается плохим тоном выводить что-то внутри функций, return предпочтительней.
1
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
25.03.2019, 12:02  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Считается плохим тоном выводить что-то внутри функций, return предпочтительней.
Вот и я думаю также. Выглядит странно. Именно в контексте php.

С другой стороны это как процедура (частный случай функции).
И в других языках вывод в процедуре абсолютно нормален и иногда даже единственный вариант (синхронизация потоков).
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
25.03.2019, 12:08
https://twig.symfony.com
http://platesphp.com
Или самопальный шаблонизатор
PHP
1
2
3
4
5
6
7
function render(string $path, array $params): string {
    extract($params);
    ob_start();
    require $path;
 
    return ob_get_clean();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2019, 12:08
Помогаю со студенческими работами здесь

Как лучше выводить кадры видео на экран в оконном и полноэкранном режимах?
Пишу систему просмотра видео с видеорегистраторов. Предполагается работа в оконном режиме, когда на экране отображается вывод с нескольких...

Наследование vs Композиция vs Агрегация: что лучше выбрать? Как лучше передавать объекты в функции?
Добрый день!! Дело вот в чём, я хочу создать класс, внутри которого будут созданы объекты других классов (реализованных в некоторой...

Как выводить символы, зная их 8-ричный код
Как выводить символы зная их 8ичный код

Как выводить массив из функции?
Вот код функции: void praymfact(int n) { int x; int *Massiv = new int; for (int i = 0; i &lt; n; i++) { printf(&quot;...

Как выводить имя функции
Доброго времени суток. Вопрос в чем. Для того, чтобы выводить имя файла используется макрос __FILE__. А что можно использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru