Скорее модные технологии убивают 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 приложения
Меня не волнует на чём проект можно написать. Меня волнует как потом его поддерживать.это спокойно можно писать на 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 в программах, не более того.