Pull to refresh

Comments 49

После Zend 2 и Symfony 2 пришлось на новой работе работать с Laravel 5. Проект довольно большой по объему кода. Сначала думал, что проект плохо написан, после прочтения кучи статей — понял, что код проекта похож по стилю на код, который в любом примере по ларавелю можно найти (статические вызовы везде по коду, компоновка запроса к БД прямо из контроллера, да и где угодно по коду).

Думал как улучшить код — ввести расслоение кода, прокидывать все зависимости через конструктор или сеттеры, а не вызывать статические методы фасадов, выкинуть Eloquent и подключить Doctrine 2, выкинуть блейд, разделить код на модули, чтобы по паре сотен файлов не лежало в директории с контроллерами и столько же с моделями. Но тогда не понятно что остается от фреймворка — получается такая себе Symfony 2.

В итоге для себя решил, что все-таки Laravel не подходит для проектов с большим объемом кода, раз из него, в таком проекте, сильно хочется сделать другой фреймворк, значит тот другой — гораздо лучше подходит для организации кода в большом проекте.
Аналогично делали. В итоге поняли, что от Laravel останется только набор компонентов, причём компонентов от Symfony будет больше.
И Eloquent — это то, от чего в первую очередь надо избавляться, абсолютно неподдерживаемая библиотека.

В итоге большой проект на Laravel — это просто Symfony с небольшим количеством Laravel-компонентов (очереди и т.д.)
На 100% моя ситуацния, правда, на тот момент еще с 4ой версией.
Ни кто ведь не заставляет писать все в контроллеры, легко можно перенести всю бизнес логику в модель, валидацию вынести отдельно, поэтому и написано все зависит от того кто пишет. Хоть и в официальной документации конечно примеры не совсем по стандарту и новички начинают приучаться писать кривенький код.
У меня для вас плохие новости, но то что вы описали как раз и является примером фрактала плохого кода. А именно ТТУК и прочие фишечки. Примеры кода в документации Laravel приведены as is с использованием Facades, которые в большинстве случаев не используются напрямую в правильном коде, для введения дополнительных объектов существует крайне умный DI, что так же повышает тестируемость кода. Структурированием кода так же занимается программный архитектор/ведущий разработчик/тимлид. Да Laravel дает довольно много свободы в плане написания кода и очень редко заставляет вас писать код по шаблону. Поэтому написание крупных, да и вообще нормальных проектов на Laravel требует серьезной дисциплины и понимания. Если вам требуется погонщик с хлыстом, чтобы не сходить с right way, то тогда Laravel не для вас. А вообще холиварить на эту тему можно долго, но статистика говорит об обратных цифрах. с 2015 года Laravel бьет все рекорды по популярности в мире PHP, как для пет-проектов, так и для рабочих, просто в Западном мире. И даже не стоит отрицать того факта, что платная подписка на Laracast дает кучу видеоуроков крайне полезных с best-practice разработки, где люди на пальцах рассказывают про TDD, BDD и грамотное проектирование и работу с проектом, которые кстати вы можете спокойно перенести в работу с другими фреймворками.
На Laravel действительно очень много сайтов.
В том числе государственных и образовательных
http://veterans.arkansas.gov/
http://sailau.orda.gov.kz
http://innovation.bsmu.edu.ua/
http://iutoic-dhaka.edu
http://beaufortccc.edu
http://lstc.edu
http://northwood.edu
http://amda.edu
http://aksaray.edu.tr
http://statuschecker.fgdc.gov
http://zhanakorgan.gov.kz
http://tika.gov.tr
http://istanbulhalksagligi.gov.tr
http://teplo.gov.ua
http://president.gov.ua
http://pz.gov.ua

Если сделать выборку по alexa, то тоже можно найти
достойные экземпляры
barchart.com
elderscrollsonline.com
ratel.kz
nplus1.ru
bitcomet.com
unblockvideos.com


Радует то, что Laravel используется по всему миру, а не только в какой-то конкретной стране или даже регионе. При этом, если верить Google Trends, то интерес к этому фреймворку только растет.

Если кому-то интересно, то вот мой список доменов (429) на которых предположительно используется laravel
hostineer.com
blablaface.net
keoghs.co.uk
multilac.com
help.aos.su
espanabreaks.com
mfo.org
zagorod.su
alternative-aquitaine.co.uk
kids.histmuseum.by
krinitsa.com.ua
everest.ua
auto-trail.co.uk
communitybase.org
elpalauet.com
devas.com
mingas.by
lwo.by
rv.campingworld.com
sanatonline.net
astrojump.com
ashkom.ru
kaznitu.kz
magdsoft.com
defensivedriversgroup.com
anticvarium.ru
guzel.net
syndome.com
zanotti.com.br
tourcatalog.ru
bettermadesnackfoods.com
cosmoparking.com
moveitstorage.com
hopescookies.com
manilastandard.net
ztkruszwica.pl
akelarre.net
errantsurf.com
capitalbank.kz
dvatp.com
flashreport.org
medicalmutual.com
gamegraveyard.net
wegocamping.com
firmfocus.biz
books.astanakitap.kz
affinityagency.co.uk
damn.ru
luxois.com
podcastarabia.net
nwselfstorage.com
tattoodragos.com
searchen.com
tamba.co.uk
euroec.by
12-music.ru
discoverpps.org
storytoolz.com
johnsonfit.com
ctrivers.org
enrabota.ru
pythagoras.net
softline.by
stamps.iknobel.kz
dannemann.com
americandesigngallery.com
ey-seren.com
laika34.ru
subscribers.pro
dsvc.org
hotel-moscow.ru
spinney.co.uk
dorfman-pacific.com
market.umh.ua
serlinassociates.com
minsk-minsk.by
realty-odessa.ua
trofei.by
cleverelements.com
estorickcollection.com
statutar.sk
trinityhouse.co.uk
newground.com
kesfett.net
the-dentist.co.uk
nnc.kz
hatton-garden.net
scgis.org
finlandia.com
wizard-industries.com
independenttrucks.com
newportnewstimes.com
origami.ru
aspee.com
wfxl.com
snapa.org
prodomov.ru
taltour.com
zhasotan.kz
csgolime.com
beachcomberhottubs.com
toufee.com
braintrauma.org
technomarine.com
ulfet-az.com
rnr.com.ua
satshop.co.uk
ssidecisions.com
emailcontact.com
priefert.com
tefen.com
foxrichmond.com
bitak.net
livetweetapp.com
pfl.ua
factory-connection.com
nageur-sauveteur.com
hapert.com
holidayrambler.com
abbeville.com
pride-net.ru
lukpro.com
mitfuso.com
kimber.com
cayhaber.net
mediabrest.by
internet-koleso.ru
specialneedsanswers.com
giordanacycling.com
sturmey-archer.com
happyskins.ru
sriramakrishna.org
sevastopolstroy.ru
eastwestseed.com
vologda-poisk.ru
trafficmodels.com
gethermit.com
solucionespolycom.charmex.net
malkelapagading.com
lstc.edu
ctvea.net
thehotelcollection.co.uk
edebyahu.com
az-pneu.sk
beaufortccc.edu
prob.test.dn.ua
shopdullestowncenter.com
burgerking.kz
teacheng.info
ohioslargestplayground.com
dailynews.kz
internetreklampaketi.com
neterra.net
radcom.com
parismarais.com
iradeo.com
misteram.com.ua
visittelluride.com
statuschecker.fgdc.gov
echn.org
hustlerturf.com
cpareviewforfree.com
naturallygoodfood.co.uk
wgxa.tv
barbecoa.com
shawmut.com
bandari.net
dbs.org
cpisecurity.com
fr.novus.com.ua
kff.kz
speechocean.com
uttaradimath.org
savaria.com
dom2.life
pramo.ru
broadwayatthebeach.com
7up.com
omoimot.ru
ndiver.com
darienlibrary.org
adnddownloads.com
poems-and-quotes.com
sonance.com
pinchapenny.com
campjellystone.com
radioislamy.com
mpay69.biz
surreynanosystems.com
leisureleagues.net
khipu.net
arte-international.com
susqu.kappadelta.org
lawinrussia.ru
highwaywestvacations.com
rmiguides.com
firedepartment.net
northwestern.kappadelta.org
atlanta.ua
sonata.biz.ua
vancouverconventioncentre.com
wilsonaudio.com
teplo.gov.ua
elorift.com
jazzmap.ru
duplicolor.com
mctop.pro
guitarwar.com
internet-prodaja-guma.com
superlift.com
www-host.pz.gov.ua
pz.gov.ua
gsmcamp.info
region-operator.ru
ei-ie.org
sar.org
siouxlandnews.com
miraclemethod.com
polygon.staya.vc
snapple.com
usocial.pro
lenel.com
jurispro.com
toyotaforklift.com
kronoshop.com
ojolie.com
expert.atamura.kz
sikayet.com
islamicbanker.com
anglofeel.ru
iutoic-dhaka.edu
thaicom.net
kimatv.com
tika.gov.tr
mnsi.net
4ad.com
glazok.km.ua
sagales.com
zorlupsm.com
erg.kz
momentfactory.com
thelife.com
istanbulhalksagligi.gov.tr
pharmspravka.ru
vest-news.ru
newvoicemedia.com
selectitaly.com
vadecom.net
karada39.com
foxfishing.ru
drpeppersnapplegroup.com
skisolitude.com
109.kurjer.info
zrk.in.ua
4mama.ua
auto-online.ru
studentrecipes.com
amda.edu
cashalot.su
stagejobspro.com
globo.tech
ip-home.net
dj.ru
nio.kz
harvardartmuseums.org
handpickedhotels.co.uk
snohetta.com
mushroomtravel.com
credit-agricole.ua
vicon.com
kredit24.kz
gastrogate.com
local15tv.com
khqa.com
fightnights.com
kassir.kz
2000adonline.com
fineandcountry.com
digitalgain.net
ostrov-chistoty.by
restaurants.com
millennialmedia.com
abc7amarillo.com
web2generators.com
trendsideas.com
bridgerbowl.com
hozvo.ru
jaksta.com
palata.kz
kurskmed.com
kfdm.com
kyzylorda.palata.kz
karagandy.palata.kz
almaty.palata.kz
uralsk.palata.kz
taldykorgan.palata.kz
taraz.palata.kz
aktobe.palata.kz
oskemen.palata.kz
akmola.palata.kz
shymkent.palata.kz
aktau.palata.kz
kostanay.palata.kz
atyrau.palata.kz
astana.palata.kz
universalstudios.com
petropavl.palata.kz
pavlodar.palata.kz
referat-ok.com.ua
kudumbashree.org
primoprint.com
dremed.com
beauty.ua
zwp-online.info
jamesbeard.org
kftv.com
postcardmania.com
northwood.edu
foxsanantonio.com
haskovo.net
whatpub.com
bills.com
bet-portal.net
music-man.com
promplace.ru
innovation.bsmu.edu.ua
infobanc.com
aja.com
foxbaltimore.com
toniandguy.com
kfoxtv.com
itickets.com
newschannel9.com
cms.bizhat.com
serenityservers.net
beyondmeat.com
domsnov.ru
batnorton.com
kaluga-poisk.ru
rinka.lt
larepublica.net
my.prodengi.kz
aksaray.edu.tr
katv.com
bspu.ru
easydns.com
iza.org
wsbt.com
sirus.su
arhionis.ru
cbs6albany.com
adbit.biz
riddles.com
alean.ru
ocrconvert.com
uwb.edu.pl
bankastana.kz
thefabricator.com
vectorworks.net
news4sanantonio.com
local12.com
grandtheftauto.net
theappguruz.com
professor.bsmu.by
villagecines.com
cinefil.com
touregypt.net
wgme.com
abc3340.com
regionoperator.ru
resolume.com
igetweb.com
monsterenergy.com
bokra.net
practicalmoneyskills.com
cabinet.vlast.kz
president.gov.ua
wlos.com
justpark.com
socialll.net
sanalkurs.net
weber.com
studydrive.net
leftlanenews.com
gifu.mypl.net
collegescholarships.org
prisnilos.su
sberbank.kz
planethoster.net
kutv.com
onlinesim.ru
mcprohosting.com
cname.pitchero.com
foxmovies.com
insidethegames.biz
en.hromadske.ua
suse.com
dunya.com
likar.info
ece.ntua.gr
veterans.arkansas.gov
firstcitizens.com
unblockvideos.com
magazine.mubasher.info
gamesdonequick.com
bitcomet.com
ratel.kz
nplus1.ru
8march.technodom.kz
barchart.com
elderscrollsonline.com
anadolu.edu.tr
zhanakorgan.gov.kz
sailau.orda.gov.kz
weyt.p5w.net
cart.onliner.by
r.onliner.by
ptzw.ru
fritzandandre.com
metamesh.net
stream.remax.co.za
williamastrom.se
museumquarter.com
expertbids.com
gemarbv.nl
eyrini.ru
palsgraafdakbedekkingen.nl
autobahn.co
ptznew.ru

Суть в том, что в интернете, на данный момент действительно много сайтов. И на ларавел достаточно. И на юии множество. И на симфоне, зенде до фига. И на, прости Господи, водпрессе просто многие миллионы, в том числе хайлоад, образование, гос.сектор ещё все угодно.

Своим комментарием я лишь хотел поделиться списком сайтов на Laravel

Если не секрет, как был составлен список?

что удивительно, очень много сайтов из KAZнета
не ожиданно
Как по мне, то одним из определяющих свойств современного энтерпрайз-реди фреймворка, является возможность сменить его частично (прежде всего уровень персистетности) или полностью на другие реализации, не затрагивая особо код бизнес-логики. Когда последний раз (давно) смотрел Ларавел впечатление сложилось, что всё очень сильно и жёстко связано.

К Laravel вполне легко прикрепить что-либо другое для персистенса. Остальное не так критично и в целом норм. Меня дико напрягает структура самой ларавели и разбиение на модули, но не так плохо как было скажем в 4-ой версии.

Разбиение на модули? О чем это ты?

вопрос связанности. Зачем например моим ивентам знать что-то об очередях? Или же зачем очередям быть настолько завязанным на конкретной реализации компонента для консольных приложений? Или зачем вводить тупой нэймспейс Contracts, он особо бесит. Хотя возможно кому-то так проще жить.

Там же без особых проблем любую подсистему можно заменить, ибо всё на сервис-провайдерах построено, список которых задаётся в конфиге вашего проекта. Можно любой из сервис провайдеров заменить на свою собственную реализацию, такую, какая вам лично будет необходима.


Для меня лично это является основным плюсом архитектуры ларавел: она позволяет мне без проблем менять логику работы фреймворка в ту сторону, в какую нужно именно мне в именно этом конкретном проекте.

Нельзя "без особых проблем" заменить службы маршрутизации и событий. Потому как эти базовые провайдеры загружаются на очень раннем этапе, и сам фреймворк очень сильно завязан на свою систему событий. Все остальное действительно подключается/отключается без танцев с бубном.

Если смотреть на код пакета Dingo\Api, то можно увидеть, что они не заменяют маршрутизатор Laravel, но вместо этого дополняют его своим собственным, что, похоже, тоже имеет право на жизнь.

Ну, Динго — вообще костылище, каких поискать. Количество "хаков" в этом пакете зашкаливает )
Начиная с условного объявления классов, заканчивая подменой маршрутизатора в контейнере. Возможно, что большинство стандартных кейсов он покрывает без проблем, но нам он не подошел.

И вы решили писать всё самостоятельно?

Строго говоря, не так уж самостоятельно. Всё собирается из абсолютно тех же зависимостей (ну или почти тех же), но уже под своим соусом. Само собой, это самое "всё" решает именно наши задачи, без претензий на универсальность.

Что такое большое приложение?

мерять проекты количеством строк кода или классами — так себе. Я видел вполне себе огромные проекты которые на самом деле были просто кучей CRUD-а. И наоборот, небольшие проекты для которых приходилось держать довольно большую команду.


По факту следует больше ориентироваться на предметную область проекта. Это что-то сложное (это никак напрямую не связано с размером), возможно с организационной точки зрения нежели с технической, и обычно с довольно большим сроком службы.


Главная — есть зависимости, сложность и DI в Laravel действительно хорош.

немного не понятно сформулирована фраза. Ну и чем это отличается от того же zend или symfony? то что DI контейнер в Laravel неплох — это факт. Ну а в symfony к примеру еще и анализ зависимостей можно провести в компайл тайм. Тут кому что нужно.


встроенную систему очередей из всех основных PHP фреймворков

не систему очередей, а возможность быстро их прикрутить. Для небольших проектов — золото. А для чего-то посерьезнее всеравно придется ставить доп пакеты с поддержкой amqp к примеру. Ну и опять же, сделать composer require в наши дни не так уж и сложно.


Единственное что реально является плюсом — возможность событие прокинуть в очередь… и то, мне не очень нравится необходимость для этого имплементить интерфейс на уровне ивента. Проще подсунуть крутым контейнером зависимостей которй он расхваливает другую реализацию ивент диспатчера


Иногда им просто не нравлюсь лично я!

а вот это в точку.


существуют ли какие-то ограничения, например, не использовать Laravel.

вы тут как будто бы задаете вопрос. Конечно таких ограничений нет. Если мы говорим про рынок в Штатах то там это наоборот приветствуется. Маркетинг он такой а люди не иррациональны. Как-то раз нас клиент попросил заюзать neo4j хотя прямой необходимости в этом не было… просто клиент услышал что это круто.


  1. Приведите примеры больших приложений, использующих Laravel

Лэндинги на laravel — большой проект, это уж точно. В целом лично я знаю парочку крупных проектов использующих laravel. Те кто не страдают — просто используют его только там где это уместно а все остальное и важное вообще на python реализовано. А дальше все от специфики зависит. Если приложение большое но оно тупо data-cetric то как бы все будет хорошо.


  1. Хорошо, как строить большие приложения?

горизонтальное масштабирование и кэширование для чайника? мдя.


«Достаточно ли хорош мой код?»

достаточно ли он отделен от фреймворка.

Наверное выражу непопулярное мнение, но лично мне Лара нравится именно "гибкостью" в плане подхода к коду. Т. е. на ней легко писать очень быстро маленькие приложения сильно отходя от академичных подходов (тобишь с долей говнокода). Прекрасно получается писать средние приложения возможно добавляя какие то свои архитектурные коснтрукции при этом так же местами забивая на академичность. Ну и ничего не мешает строить поверх свои архитектурные решения и идти страшным энтерпрайз путем) При этом вполне получается идти от первого к последнему рефакторингом.

от академичных подходов

меня всегда напрягает формулировка "академические подходы". Что это для вас, вот чисто ради статистики.

Ну например SOLID. Прекрасный набор принципов. И Их соблюдение важно. Но тот же AR их нарушает весьма сильно (особенно S). И в небольших приложениях это дает простоту архитектуры и скорость разработки. То же самое и с внедрением зависимостей например в контроллеры. Я например отделяю для себя сервисы инкапсулирующие бизнеслогику и сервисы окружения так сказать. И вот их я явно не буду пробрасывать через внедрение зависимостей а могу просто использовать хелпер (например view) или или извлеку из контейнера прямо в коде метода. И т. д.

Но тот же AR их нарушает весьма сильно (особенно S).

зависит от контекста. Если AR используется исключительно как модель данных и не содержит бизнес логики, относится исключительно к persistence layer, то как бы я не вижу тут сильного нарушения SOLID.


Другое дело что люди начинают пихать туда бизнес логику… для простых случаев, коих большинство, все будет хорошо. Но как только у нас набирается весьма сложная бизнес логика требующая работы с графом объектов, AR будет только мешать.


Но тут проблема не с AR, есть куча других подходов. например row data gateway который можно применить для устранения проблем с AR и получить вполне изолированную логику. Проблема в людях которые просто привыкли использовать один инструмент и не рассматривают другие варианты. И это могу вам сказать серьезная проблема и я понятия не имею как это лечить. Это как юзать ORM там где удобнее взять SQL и наоборот.


Так же сам по себе принцип SRP весьма бесполезен. Лучше на OCP концентрировать внимание так как цель SRP как раз таки OCP. У меня порой складывается впечатление что SRP был добавлен в SOLID тупо что бы получалось SOLID а не OLID.


а могу просто использовать хелпер (например view)

это сервис локатор. И если ваш фреймворк умеет дабл диспатч в контроллеры (laravel например) то через DI это проще и легче контролировать что в контроллерах ровно то что надо а не все подряд. Скажем в symfony этого из коробки нет, хотя с версии 3.3 можно будет за 10 строк добавить.


или или извлеку из контейнера прямо в коде метода.

Это более чем "академично". Просто не так удобно. Но явно удобнее чем "контроллеры как сервисы".

Что значит "сильного" нарушения SOLID? Или нарушается или не нарушается. AR по определению его нарушает и создан чтобы его нарушать. Мы тут не говорим про то, в каком что слое используется и дёргается ли ->save() по поводу и без.


Проблема в людях которые просто привыкли использовать один инструмент и не рассматривают другие варианты. И это могу вам сказать серьезная проблема и я понятия не имею как это лечить.

Заниматься просвещением в меру сил и возможностей. Больше вариантов не вижу.


Так же сам по себе принцип SRP весьма бесполезен. Лучше на OCP концентрировать внимание так как цель SRP как раз таки OCP. У меня порой складывается впечатление что SRP был добавлен в SOLID тупо что бы получалось SOLID а не OLID.

Так и есть. SOLID — маркетинговый ход нескольких известных консультантов, которые смогли продать старый-добрый cohesion/coupling под новым именем.

AR по определению его нарушает и создан чтобы его нарушать.

Вот скажите, если у меня объект реализующий AR тупо представляет таблицу в базе и не содержит никакой бизнес логики, какой из принципов SOLID он нарушает? SRP в данном контексте он не нарушает, так как у этого объекта одна единственная причина для изменений.


Да, он нарушает — LSP. Но это можно пофиксить заменив наследование трейтом который будет делегировать логику другому объекту. Тогда у нас просто исчезнут "подтипы".


Да, он нарушает DIP так как подразумевает глобальный доступ к зависимостям. Но опять же… можно реализовать сервис локатор который будет обращаться к адаптеру и тем самым мы будем иметь возможность подменить реализацию нижестоящую.


Статические методы-фабрики которые работают с глобальным стэйтом — можно их убрать в отдельный компонент finder.


Как по мне больше проблем от репозиториев с методом save чем от AR использующегося как data model. Хотя тут опять же от контекста зависит.


старый-добрый cohesion/coupling под новым именем.

именно так. Ну и еще information hiding и GRASP. С последним к слову грустно, про grasp мало кто знает. Не на слуху.

Да, с этой точки зрения про AR и SOLID я раньше не думал.

зависит от контекста. Если AR используется исключительно как модель данных и не содержит бизнес логики, относится исключительно к persistence layer, то как бы я не вижу тут сильного нарушения SOLID.

Тогда это не AR. Смысл этого паттерна именно в совмещении бизнес-логики и логики хранения.

ну да, это уже row data gateway)

Подозреваю, я виноват в распространении формулировки. Под ней я всегда понимал «слепое следование паттернам и принципам, нужны они или нет».

При всём уважении, не уверен, что схватил это выражение от вас)

а я это просто называют культом карго.

Я тоже так называл, но было больше непонимания, чем когда я стал называть это "академичностью".

Очень удивлён тем, что авторы Laravel не смогли привести примеров крупных проектов. У того же Yii примеры были ещё когда он был версии 1.0, а теперь есть ещё и каталог http://yiipowered.com/ru, где, конечно, далеко не всё, но крупные присутствуют.

не смогли привести примеров крупных проектов.

я думаю стоит посмотреть оригинальный подкаст, ибо что-то мне подсказывает что 80% информации упущено в тексте.

Подозреваю, что так и есть надо будет послушать. Тейлор — прекрасный маркетолог и как любой маркетолог, должен был быть готов к этому вопросу. Поэтому я и удивился.

Альфа-форекс из каталога Yii сделан на OctoberCMS, которая базируется на Laravel. Вывод этот сделан на основе cookie, а так же по наличию пол года назад вот такой ошибки, характерной для плагина ProBlog.
Так что актуальность каталога под большим вопросом.
Из крупных на Yii 1.x есть mts.ua, tass.ru, livecoin.net и т.д. Если кому-то интересно, то вот
список (126) того, что мне удалось обнаружить на Yii 1.x
magneticsystem.biz
modelcard.biz
traveling.by
beorganic.by
autotovar.by
evna.by
cian.bz
keep2share.cc
escape2poland.co.uk
villabaku.com
vagondom.com
luuk.com
pechatnick.com
solar-staff.com
recordrentacar.com
sevas.com
technosider.com
skype-language.com
sequenom.com
gsmpress.com.ua
tfd.com.ua
doctorsam.com.ua
artex.com.ua
toys.com.ua
atlant2k.com.ua
sunshouse.com.ua
pyha.fi
tomsk.gov.ru
arbalet.in.ua
timeua.info
goroskopy.info
utes.krym.ru
ng.krym.ru
30let.krym.ru
ndk.kz
halykbank.kz
islam.kz
astana-motors.kz
inkaraganda.kz
profinance.kz
hyundai.kz
mazhab.kz
fanart-central.net
telgraf.net
socialchance.net
livecoin.net
odpublic.net
mafii.net
capitalist.net
hit-season.net
cor.org
artalbum.org.ua
lipetskcity.ru
medialipetsk.ru
tass.ru
milady-24.ru
psyonline.ru
postila.ru
rivierarealty.ru
lapana.ru
afkstroy.ru
doc4web.ru
cs-garant.ru
9months.ru
informpskov.ru
aioncataclysm.ru
romashka96.ru
medi.ru
tuning-parts.ru
38mama.ru
test-drive.ru
arafnews.ru
pozitivmag.ru
lacywear.ru
zapchastivoz.ru
photosight.ru
snyat-kvartiru-bez-posrednikov.ru
1ul.ru
word-to-html.ru
2mm.ru
karofilm.ru
tripsmile.ru
zasmeshi.ru
city-mobil.ru
zamos.ru
uztt.ru
pedigree.ru
kurgan.ru
mobi03.ru
1pnz.ru
lozahobby.ru
krym.ru
hellride.ru
socialchance.ru
zhonga.ru
smapse.ru
nasko.ru
mz-clinik.ru
nskgortrans.ru
joystick.ru
pxel.ru
bazametrov.ru
jessnail.ru
zanostroy.ru
autotuning-bmw.ru
auto-camera.ru
oliu.ru
aioninfinite.ru
avtoschetki.ru
belwest.ru
novostroy.ru
bestactor.ru
kniga-stroitelia.ru
kuponator.ru
elisdn.ru
novostroy.su
nedvizhimost.tk
robinzon.tv
apa.tv
anifilm.tv
1game.ua
apltravel.ua
hosting.ua
mts.ua
pay.vn.ua
xn--80ajbzh4e.xn--p1ai

ТАСС вроде на 2.0 уже...

Сайт может и на October, но сама система на Yii. Надо будет URL там поправить и скриншоты, чтобы не путали...

Спасибо. Дико не удобный ЛК этого альфа-форекса:-)

Мне тоже не очень нравится… интересно, куда они фидбек на эту тему принимают...

Никуда. Им многие уже писали в службу поддержки через ЛК. На что приходят отписки в стиле «спасибо, мы учтем ваши пожелания». Время идет, пожелания не учитываются. Даже эту проблему с отображением служебной информации исправляли несколько месяцев.

Да, в крупных приложениях главное, как ты пишешь бизнес-логику предметной области. Хорошо спроектированная бизнес-логика обычно легко переносима между фреймворками.


Для меня критерий применимости фреймворка для крупного проекта — степень следования рекомендациям PHP-FIG.

PHP-FIG вообще никакого отношения к размеру проектов не имеет. Говорю как его участник.

Only those users with full accounts are able to leave comments. Log in, please.