С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677

Return или echo

18.09.2015, 14:32. Показов 2451. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Когда то мне один программист сказал: в методах классов никогда не используй echo, просто использую return и в том месте где ты обьявлял обьекты класса, получал данные - там и выводи.. Я стал так делать.. Но тогда не задал один вопрос: почему?... Обьясните пожалуйста, в чём может быть загвоздка если я внутри методов классов буду использовать echo, вместо того что буду получать и выводить эти данные вне класса?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2015, 14:32
Ответы с готовыми решениями:

echo $kom1;// Вася27//; $i = 27; $kom = "Вася"; echo $kom.$i;//ERROR // почему?
почему может быть ошибка? при echo $kom1 работает а при втором варианте выдает ошибку неизвестная переменная?

return и echo
Возможно вернуть значение текстом? Вот например есть функция function product($id) { if($id == 1) return "Пиво"; ...

Вывести символы, используя только три ECHO. Echo '0', Echo '*', Echo '\n' (использовать цикл)
Вывести символы, используя только три ECHO. Echo '0', Echo '*', Echo '\n' (использовать цикл). Рисунок который нужно вывести: ...

21
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
18.09.2015, 14:48
Linked, функция должна решать одну задачу. А вывод это уже вторая.
1
Заблокирован
18.09.2015, 14:56
Лучший ответ Сообщение было отмечено Linked как решение

Решение

Цитата Сообщение от Linked Посмотреть сообщение
в чём может быть загвоздка
да ни в чем. выводите если нравица. просто принято отделять логику программы от вывода. если у вас в разных местах класса идет вывод, сами запутаетесь спагетти где что у вас выводится и выводится ли вообще.

Цитата Сообщение от Jewbacabra Посмотреть сообщение
функция должна решать одну задачу.
задачей функции может быть вывод.
1
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
18.09.2015, 16:09
Лучший ответ Сообщение было отмечено Linked как решение

Решение

Linked
Есть несколько тонких моментов:
i) функции с побочными эффектами, в принципе, сложнее отлаживать, вне зависимости от того, какой это побочный эффект;
ii) если пытаетесь строить абстракции, то они не должны зависеть столь строго от окружения, например, если функция просто возвращает строку, то строку можно и в SOAP обернуть, и в файл записать;
iii) писать везде echo плохо тем, что нужно контролировать буферезацию вывода, иначе Вы (или Ваш коллега) можете случайно отдать данные до того, как будут сформированы заголовки.
1
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
18.09.2015, 21:29
Цитата Сообщение от a-fw Посмотреть сообщение
да ни в чем. выводите если нравица.
И как быть уверенным, что вывод будет в нужном месте? Или нужны еще какие то действия до вывода?
1
Заблокирован
18.09.2015, 22:07
Цитата Сообщение от Dolphin Посмотреть сообщение
И как быть уверенным, что вывод будет в нужном месте?
так же как и любое другое действие в программе (не только вывод) произойдет в нужном программисту месте. Предполагается что человек будет писать программу находясь в сознании
1
18.09.2015, 22:31

Не по теме:

Цитата Сообщение от a-fw Посмотреть сообщение
так же как и любое другое действие в программе (не только вывод) произойдет в нужном программисту месте.
Если бы всегда все было так просто
Цитата Сообщение от a-fw Посмотреть сообщение
Предполагается что человек будет писать программу находясь в сознании
кто ж кодит в сознании :D

0
Заблокирован
18.09.2015, 22:33
Кстати я не агитирую за такой подход. просто считаю что то что не запрещено то разрешено. а дальше каждый сам решает. кому как удобнее
1
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
19.09.2015, 19:40
Количество выводящих конструкций в качественном коде на PHP должно быть не больше 1.

Цитата Сообщение от a-fw Посмотреть сообщение
просто считаю что то что не запрещено то разрешено
Испражняться себе в штаны тоже не запрещено. Именно так выглядит множественный вывод в PHP.
1
Заблокирован
19.09.2015, 19:53
Цитата Сообщение от OnYourLips Посмотреть сообщение
Испражняться себе в штаны тоже не запрещено
Остряк самоучка, культуры полные штаны
1
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
26.09.2015, 12:19
Цитата Сообщение от a-fw Посмотреть сообщение
Кстати я не агитирую за такой подход. просто считаю что то что не запрещено то разрешено. а дальше каждый сам решает. кому как удобнее
а потом после такого подхода и получается результат поста #9
0
Заблокирован
26.09.2015, 17:50
Цитата Сообщение от evgenkur Посмотреть сообщение
получается результат поста #9
если мозгу остались одни догмы, скорее всего и с одной точкой вывода получится такой же результат. Дело не в количестве точек вывода, а в конкретной задаче для которой существуют подходящие и неподходящие решения.
0
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
26.09.2015, 17:55
Цитата Сообщение от a-fw Посмотреть сообщение
если мозгу остались одни догмы, скорее всего и с одной точкой вывода получится такой же результат. Дело не в количестве точек вывода, а в конкретной задаче для которой существуют подходящие и неподходящие решения.
rus pls
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
26.09.2015, 21:35
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * Функция инклудит файл и вставляет параметры из массива $params
 * @param string $file
 * @param array $params
 */
public function display($file, $params = array())
{
    if (!empty($params)) {
        extract($params, EXTR_SKIP);
    }
    ob_start();
    include PATH_ROOT . 'views/' . $file . '.php';
    echo ob_get_clean();
}
и
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
 * Функция инклудит файл и вставляет параметры из массива $params
 * @param string $file
 * @param array $params
 */
public function rendering($file, $params = array())
{
    if (!empty($params)) {
        extract($params, EXTR_SKIP);
    }
    ob_start();
    include PATH_ROOT . 'views/' . $file . '.php';
    echo ob_get_clean();
}
 
/**
 * вывод шаблона
 * @param string $file
 * @param array $params
 */
public function display($file, $params = array()){
    echo $this->rendering($file, $params);
}
так вот если function rendering нигде не используется кроме как в display то нет никакого смысла разбивать по функциям
Цитата Сообщение от Jewbacabra Посмотреть сообщение
функция должна решать одну задачу
ага только задачи могут быть разные, большие и маленькие если задачу вполне можно внести до12 строк и они читабельны в коде, не вижу особого смысла разбивать. Вот так и назовем правило 12 строк. :-)
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
26.09.2015, 21:41  [ТС]
Poznakomlus, $params = array() в аргументах, означает что будет принят элемент массива, например:
PHP
1
rendering($file, $my_array['string1']);
?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
26.09.2015, 21:44
Цитата Сообщение от Linked Посмотреть сообщение
Poznakomlus, $params = array() в аргументах, означает что будет принят элемент массива
нет это значение по умолчанию если вы вызовете метод с одним аргументом
$this->display($file);
внутри метода $params будет равен array пустому массиву
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
26.09.2015, 22:00  [ТС]
Poznakomlus, понятно.. Вне темы: не подскажете где можно почитать что нибудь конкретно приёмов программирования, применение MVC моделей и т.п.? Мне не интересно написание приложение при помощи фреймворков (имхо много времени экономит, но мне интересно с нуля).. Может книга какая (только без изучения условий if, else и т.п. (не для новичков всмысле).
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
26.09.2015, 22:10
Только на английском языке http://www.it-ebooks.info/ пользуйся там поиском. К примеру php
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
26.09.2015, 22:15
Цитата Сообщение от Poznakomlus Посмотреть сообщение
если задачу вполне можно внести до 12 строк и они читабельны в коде
и не повторяются. Можно даже 2-3 строчки выделить в функцию, если алгоритм этих строчек встречается в коде не один раз. А если функции еще и имя дать самодокументирующее, так это еще и плюс к читабельности.
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
26.09.2015, 22:23
Лучший ответ Сообщение было отмечено Linked как решение

Решение

Kerry_Jr, да тут надо добавить не повторяются и одну строчку можно вынести
и там вкоде выше я скопипастл в rendering echo ob_get_clean();
надо было return ob_get_clean();
Linked, можно и на живом коде изучать. Я к примеру всем советую изучить этот http://fatfreeframework.com/home
микрофрейворк. Плюсы, он написан профессионалами, небольшое количество кода(но какого) для изучения
У них есть хорошая группа в Google если, что и статьи на Хабре.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2015, 22:23
Помогаю со студенческими работами здесь

Можно ли вместо return использовать echo?
собственно вот в чем вопрос имется такая функция function param_start($title,$action,$id='form',$style='') { if (!$id)...

Где ошибка в коде? for ($j=0;$j<=$i;$j++) {echo 'dbadd('.$arr[$j].')'; echo 'document.writeln(db['.$j.']);';}
Должен ли работать такой код? &lt;?php echo '&lt;script language= 'javascript '&gt;'; echo '&lt;!--'; for ($j=0;$j&lt;=$i;$j++) {echo...

Что лучше, print или echo?
Что лучше, print или echo?

Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}?
package com.company; import java.io.Serializable; public class person implements Serializable { protected String name; ...

Вывод ошибки без echo или print
&lt;?php class Engine { private $_page_file = null; private $_error = null; public function __construct() { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru