У Вас же есть прекрасный пример под рукой (хабратопик, на который Вы ссылались, где описывался ранее include). Соберите факты, которые, как Вы полагаете, могут быть упущены из виду программистами, и опубликуйте. А так получается, что и сам «секрет» давно всем известен, да еще и был ранее описан здесь…
> что позволит упростить код и избавиться от опасности совпадения имен функций.
это, простите, каким-же образом?
во всех ваших примерах, мало того, что все импортируемые сущности попадают в локальное/глобальное пространство имен, так еще и память расходуется 2 раза.
на саму переменную, и на присвоенную копию, если приспичит ее изменить.
Вы давно смотрели в код нюкоподобных CMS? Там двадцать функций с названиями вида «block_show()» — норма, а не исключение. Уходя от необходимости объявлять функции, мы уходим от опасности совпадения их имен. А уж имя файла гарантированно уникальное.
Честно говоря нужность этой возможности крайне сомнительна. Любой язык имеет не очевидные особенности которые редко кто юзает. Знать их полезно, блеснуть ими на собеседование, тоже круто. Но за реальное использование их в продакшен коде — нужно отрывать руки :)
Мне сложно представить где реально можно такое заюзать. Оба примера что вы привели, лучше решать ООП, либо соглашением о пространстве имен для конфигов.
Тем ни мене — спасибо, я не знал о такой возможности. :)
Что же, пожалуй соглашусь, что _технически_ для конфигов этот прием имеет смысл.
Я говорю скорее об общепринятости подхода.
Какие плюшки это дает? Из минусов — у людей которые буду поддерживать ваш код после вас, этот прием может вызвать недоумение. Но может быть есть плюсы которые я не вижу и сам начну так делать после вашего ответа… :)
Делаете класс для работы с конфигами.
Внутри он работает так, как быстрее и проще, используя на «полную катушку» все возможности языка. А наружу смотрит красивыми интерфейсами, геттерами и сеттерами, чтобы ява-программисты не сошли с ума -))
Ни чего не мешает, вы правы. Я вообще не религиозен в плане кода. Если чтото работает и это возможно поддерживать — почему бы не использовать. :)
Но я скорее хотел увидеть от вас плюсы подключения конфигов таким образом, чем спорить и доказывать что я прав :) Знания новых подходов и чужой опыт для меня ценнее абстрактной правоты.
Простите за «холиварный» подход, но ООП нужно использовать там, где предполагается использование объектов.
Является ли визуальный блок на странице у клиента сущностью-объектом на сервере, у которого есть время жизни, свойства и методы, процедуры создания и уничтожения, родители и потомки — для меня очень большой вопрос.
Нюк, не самый лучший представитель того что есть на ПХП. И вы предлагаете, фактически, процедурный подход (ну, точнее модульный). Я видел очень мало хороших продуктов с таким подходом. Дрюпал — приятное исключение.
У меня был опыт (хороший друг попросил — сам бы не полез) с «чудесным» продуктом oscommerce (кстати достаточно известным и распространенным), где «плагины» устанавливались примерно как «в файле таком то, после строки Х вставить такие то строки». Я не шучу.
Конечно я не буду говорить что ООП, сам по себе поможет сделать хорошую архитектуру. Но сейчас по нему много материалов и просто прочтение GoF уже даст много идей для хорошей и правильной архитектуры.
Так что с точки зрения проектирования — ООП подходит лучше.
Если же говорить о производительности, то я уже не раз выражал свою точку зрения. Если ваше приложение упирается в производительность ПХП, это значит ПХП вам не подходит и инструмент реализации был выбран не верно.
О прекрасно вас понимаю… У самого душа кровью обливается, кода ради дедлайна приходится просить команду делать неидеальное решение.
Все что я хотел сказать — данный трюк, характерен скорее для процедурного подхода. Как показывает пример дрюпала — и на нем можно делать очень качественный код. Но мастерства для этого надо, имхо, больше.
Как я уже сказал, трюк интересный, спасибо :) Знать о нем стоит. Но вот пользоваться — лично я остерегусь.
Мне кажется у нас просто немного разные подходы. В смотрите на код сам по себе. Это вполне здравый подход.
Я смотрю, на код, на то как его поддерживать ближайшие 2-3 года и как это делать если человек написавший его уйдет из фирмы. Да, я немного прагматик и параноик в этом плане.
Относительно "++" я отвечу так. Если усредненный уровень разработчика, на которого у моей текущей компании есть бюджет, вдруг поглупеет, и перестанет понимать этот синтаксис, я попрошу людей в команде не использовать "++". Хотя конечно, лучше сменить место работы… :)
Знаю звучит странно, но мое мнение код это просто способ достичь цели. :)
Вам не кажется что, для реализации кода отрисовки бокса на странице вполне подходит патерн
Strategy? И конечно при его реализации, мне где ни будь да заюзаем include…
Но есть все же большая разница как именно мы используем include — как побочный инструмент (в моем случае) или как основной (в варианте топикастера).
Читаем мануалы — об одном секрете include