
Скорее модные технологии убивают PHP, symfony и doctrine начали, а типизация в php7 добьёт. входной порог повышается, кода писать нужно больше, в итоге проще писать сразу на java-.net, а не на костылях php, а для хипстеров есть nodejs. Потому приток новой крови сократился, джуники предпочитают учить js, а не php.Есть мысль, что модные языки и технологии оттянули на себя разработчиков, который в PHP могли придти. Скоро будем динозаврами. С одной стороны плохо, с другой хорошоЖдем выхода PHP7 и всплеска интереса.
Есть и не большинство, когда бизнес-логика много сложнее, чем логика отображения. TypeScript интересен, но у него нет инфраструктуры, что мешает созданию сложных приложений. PHP c тем же Symfony пока на голову выше ноды с тайпскриптом. По-этому, то, что "за рестом" - скорее всего будет PHP.А на мой взгляд, для большинства сайтов технология, на которой написано rest-api - вообще не важно.
// callback-hell
app.get('/some-file', function(req, res, next) {
fs.readFile(filename, function (err, content) {
if (err) return next(err);
doSomethingWithFile(function (err, (data) {
if (err) return next(err);
res.send(data);
}))
});
});
// ES7, async-await stage 3
app.get('/some-file', async (req, res) => {
const content = await fs.readFileAsync(filename);
const data = await doSomethingWithFile(content);
res.send(data);
});
К сожалению, только в теории. Вопрос изоморфной вьюхи реакт решает, а дальше - ничего, одни хипстерские поделки. Так что все равно в итоге за нодой будет какой-нибудь php.А node.js еще ко всему прочему позволяет шарить код между клиентом/сервером (валидация, шаблоны) и делать universal приложения. Это когда вместо пустого index.html по запросу отдается весь контент, а дальше работает как обычное SPA.
Ты из в темы в темы повторяешь про какую-то генерацию HTML, а я, в свою очередь, из темы в темы тебе напоминаю, что ты говоришь лишь про частный случай presentation, в то время как основную часть приложения составляет domain, application, инфраструктура.Сейчас сайт с генерацией html на сервере - динозавр.
Context is king, не нужно пытаться сделать что-то универсальное. Не нужно смешивать валидацию domain с валидацией на уровне представления; не нужно смешивать модель для записи и для чтения, etc.А node.js еще ко всему прочему позволяет шарить код между клиентом/сервером (валидация, шаблоны) и делать universal приложения
Может для банковской системы нужно все, что ты каждый раз упоминаешь, но это не нужно для большинства проектов, а где нужно - берут JVM.Меня не волнует на чём проект можно написать. Меня волнует как потом его поддерживать.это спокойно можно писать на node и пользоваться тем, что у тебя фронтенд и бэкенд могут иметь общий код
Да это всё простые концепции. Аналогично я иногда не понимаю и половины слов в ваших разговорах на тему AngularJS и ко, потому что я не в теме, но я не думаю, что это rocket science. Когда ты уже знаком с подходом/технологией, то тебе это уже кажется простым и ты можешь применять это в проекте почти любого масштаба, даже если кажется, что проект не очень большой.Может для банковской системы нужно все, что ты каждый раз упоминаешь
). Но я, наверное, не ошибусь, если ты скажешь, что для нормального проекта — это боль в заднице и за это нужно бить в морду? Ну вот примерно также для меня выглядят и твои попытки отказаться от ООП.Вот-вот, когда-то с инлайновыми вставками бились и говорили что это плохо, а сейчас все фигачат на angular и считают это удобнее отдельного биндинга. Так же и со слоёной архитектурой, все через это прошли, а когда отказались от лишних запретов, то вдруг оказалось что у нас целая вечность на работу с фронтэндом, т.к. бэкэнд перестал казаться сложной задачей и у нас есть время на финтифлюшки.Для кого-то просто — это когда ты пишешь на голом JS + jQuery, а стили вставляешь прямо в теги, не вынося это в CSS (провожу аналогию, как умею). Но я, наверное, не ошибусь, если ты скажешь, что для нормального проекта — это боль в заднице и за это нужно бить в морду?

class UserBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
Всякие "чатики" - это вообще далеко не "большинство проектов". А простым сайтам это не нужно как раз. Вернее, простые сайты аля "контентные" - им вообще не все плевать. JS там больше презентационный - всякие анимашки. Для них в общем глубоко пофиг, нода там, или пхп, или руби. На них и пасутся всякие недопрограммисты фронтенда, знающие технологии, но не знающие программирование.Всякие чатики (сюда же маленькие соц-сети), контентые сайты, бэкенды для небольших игр - это спокойно можно писать на node и пользоваться тем, что у тебя фронтенд и бэкенд могут иметь общий код.
Эти рассуждения длятся ровно до тех пор, когда ты не садишься за крупный SPA сайт, который развивался три года усиленно по фичам и велся бывшим верстальщиком (ака недопрограммистом). И вот тогда выясняется, внезапно, что логика слоя отображения - она тоже может быть писец какой сложной и запутанной.И нахрена такой ООП? А все дело в том, что какие-то простые области на самом деле можно покрыть с помощью ООП - драйверы для базы данных, обертки вокруг кешей, авторизации, файловой системы и прочих аналогичных штук.
Единственное что нужно в коде бизнес-логики - это интерфейс. Интерфейс можно описать на любом языке, и не обязательно явно. В JS сейчас появился Iterable, работающий по принципу утиной типизации.
Это технический код, деталь реализации Symfony. Это glue code, детали конфигурации, назови как хочешь. Это скучный и неинтересный код, тот факт, что там будет «неправильный ООП» или что-то такое меня не особо волнует.Давай банально вспомним Symfony и как сделано наследование в бандлах.
Но начну я с того, что расскажу чем мне не нравятся некоторые аббревиатуры на букву M: MVC, MVP, MVVM и другие. У неофита, читающего свои первые книги и статьи о том, как проектировать приложения, эти аббревиатуры всплывают одними из первых. У него создаётся ложное впечатление, что программа — это некая триада состоящая, например, из модели, контроллера и представления, и, что самое опасное, члены этой триады равны по важности! Многие из этих статей и видео-уроков подкрепляют эту опасную ложь примерами приложений из серии: «ну пусть за представление у нас отвечает такой-то шаблонизатор, контроллеры — это контроллеры нашего фреймворка, а модель — это какой-нибудь ActiveRecord ORM». После такого могут понадобиться годы Толстых Тупых Уродливых Контроллеров, чтобы неофит осознал, что что-то он делает не так. Что Модель в этих триадах занимает главное место и чем сложнее приложение, тем более это выражено.
Главный принцип деления программы на части высокого уровня не меняется уже несколько десятилетий: Data access layer, Business (logic) layer и Presentation layer. Причем, очевидно, что слой отражающий суть и всю ценность нашего приложения это Business layer, а DAL и PL являются некого рода обслуживающими слоями. А все эти аббревиатуры на букву M представляют собой архитектурные паттерны, описывающие как организовать Presentation layer в программах, не более того.