Я прошел пару обучающих курсов и прочел пару книг по PHP. После натянул верстку на joomla, joomshopping. А после попробовал cделать компонент joomla самостоятельно и тут начались большие проблемы. Я ничего не могу понять в коде ядра joomla. Функции вызывают другие фунции те третьи и так огромное количество раз. В структуре MVC тоже ничего не могу понять. В обучающих материалах по PHP MVC уделяется совсем немного места и в лучшем случае дается примитивный пример. Код обучающих примеров и заданий по PHP, соотносится с кодом CMS, как муравей со слоном. Поставил PHP Storm он позволяет прыгать по функциям, но когда начинаешь прыгать, то не понимаешь где конец и через пару часов забываешь откуда начал. Подскажите пожалуйста, как подойти к изучению CMS, с чего начинать и чем заканчивать. Совершенно не принципиально, какая это CMS, подходы я думаю везде одинаковые. Может быть посоветуете хорошие обучающие материалы по PHP и пр. А то у меня ощущение, что я зря PHP изучал, применять его для CMS не могу, зато могу решать примитивные учебные задачки.
Читать код и еще раз читать. Почитайте, что такое Шаблоны проектирования и какие они бывают. В каком порядке работает код, что куда прыгает, какие данные куда в каком виде передаются можно легко отследить в дебагере, Настройте phpstorm + xdebug и вперед.
MVC везде реализован по разному, но основная концепция не меняется. Очень часто во всяких обучалках не достаточно раскрывают, или вообще не раскрывают тему с Routing (маршрутами), хотя это, можно сказать, самое базовое и важное в реализации MVC. Попробуйте написать свой мини движок так, как Вы понимаете, что такое MVC -
понимание сразу придет.
Вам надо изучить ядро и архитектуру CMS. Понять как и что работает. Изучать построчно с применением необходимых инструментов.
Если вы вдруг поняли как оно работает, у меня для вас новость: вы больше не будете пользоваться CMS.
Так как вы поймете ужас реализации многолетней клоаки кода.
Скорее всего вы найдете подходящий для себя фереймфорк и станете работать с ним.
avr1972: Конечно нет. Статья вероятно из начала нулевых .
1) Писал человек который совершенно не разбирается в вопросе.
2) Там нет ни одного реального минуса. Какая нафиг веб-студия?
3) Системы пишутся под конкретный проект а не для всех сразу.
4) Я говорил не о "самописных CMS" в вашем понимании.
5) Любой нормальный программист разберется в хорошем и грамотном коде проекта. Т.к. для основы выбирается фреймворк, то и программиста берут с знанием конкретного фреймворка.
... и еще сотня пунктов.
P.S.
Вы скинули статью и это говорит о вашем уровне - который нулевой.
По этому в моем основном ответе смысла для вас на текущий момент нет.
Вы не сможете разобраться с ядром и архитектурой. Следует начать с изучения полноценной разработки на PHP ООП.
manwe_ru: Вот и я о чем.
Сайт под ключ, на текущий момент - это целая экосистема, на несколько месяцев разработки и сотни тысяч рублей. Правда гастарбайтеры всегда будут.
"Вы не сможете разобраться с ядром и архитектурой. Следует начать с изучения полноценной разработки на PHP ООП. " А можно как можно подробнее, как это осуществить? И еще вопрос, а много в России заказчиков, готовых отдать много сотен тысяч рублей?
И еще один вопрос я смотрел сайты студии Артема Горбунова, они в основном сделаны на битриксе. Так эта студия гастарбайтеры?
А битрикс многолетняя клоака кода? А пара программистов, спецов по фреймворку - напишут намного лучше, чем коллектив битрикс из сотен людей? Может я и дурацкие вопросы задаю, но мне надо разобраться?
"Любой нормальный программист разберется в хорошем и грамотном коде проекта." А где у заказчика гарантия, что код будет грамотным? Вы часто встречали людей, довольных кодом предшественников? Я раньше бухгалтером работал, крайне редко встречались люди, довольные работой предшественников.
А может у них такие низкие цены и наверное соответственное качество, потому что в этом регионе заказчики не могут больше платить? И услуги студии Лебедева там никому не нужны? Мне кажется сайты можно сравнить с машинами. Всем нравятся мерседесы, но многие могут себе позволить только Оку. Это не правильное сравнение?
Кстати студия Лебедева, насколько мне известно никаким фреймворком не пользуется. Разработали свою CMS на языке C и используют ее очень много лет. Так у них тоже клоака кода?
avr1972:
Зачем писать столько ответом, когда можно в один?
Пришлось объединить все ваши ответы в один, а то читать трудно.
1) Плохо вы знаете студию Лебедева. Сейчас вакансия закрыта, но год-полтора назад была Senior PHP (Symfony). У них под разные проекты свои системы. Крайняя писалась на Go (ну это веяние тренда).
Вы представляете объемы работ по крупным проектам?
К примеру butik.ru писали 5-6 человек в течении полугода. И это по моему мнению маленький проект.
Сейчас я работаю в команде, где 12 разработчиков, 2 тестера, юзеркейсер, тесткейсер, продуктонер и еще несколько людей на разных должностях, делают проект 8 месяцев и бета-релиз только на конец Августа.
2) Заказчиков которые готовы отдать за хороший проект много сотен, полно. К примеру крайний заказ у меня был на 1.5 миллиона за 6 месяцев работы. Далее проект стал меняться а инвестиции перестали поступать в нормальном объеме. Пришлось разорвать договор. Что бы найти подобных заказчиков/инвестором, надо конечно иметь хороший опыт, знания и иногда рекомендации.
3) Студии Лебедева и Горбунова, это миллионные заказы, всегда новый код и новый подход. И зачастую это не веб проекты. Сначала изучите деятельность тех о ком говорите.
4) Битрикс, выбирают те, кому сели на уши. Ни одна компания, которая изначально имеет штат разработчиков, не возьмет Битрикс. И отвечая на ваш вопрос - да, это полное дерьмо (хотя сейчас исправляются, переписывают мясо с каждым релизом.)
5) Я встречал людей которые довольны кодом. Но чаще встречаю тех, кто говорит что код говно а сам не может банально реализовать DTO объект и подцепить на хендлер.
6) Цены:
в интернете нет регионов, областей и т.д. Я работал с инвестором из Нидерландов 4 месяца за 10к евро (2013г.), находясь за 1200км от Москвы
Его цены низкие, т.к. он делает на opensource решениях, тупо подправляя конфиг и выдавая сырой продукт. Скажем интернет магазин - тупо prestashop. Для Васи который продает что то простое, вполне хватит.
7) те кто хотят Мерседес, берут его но в поддержанном состоянии. А те кто берут ОКА, обычно долго не ездят. Понятно сравнение? Нет? - Вам сделали проект за копейки, но дальше вы не можете его развивать и/или он валится от 10 пользователей. Запомните - нормальный бизнес не будет экономить на самом важном.
Подробнее о изучении ООП?
Сначала стоит хотя бы по документации и видео - урокам с youtube по PHP7 OOP.
Получить понимание принципов и взаимодействия. Написать простые рабочие примеры, но не с урока а придумать самому. Если что то не понятно, гуглите и смотрите запросы в ютубе. Ответы будут найдены.
Изучите автолоадеры и композер.
Когда подготовитесь, вооружитесь PHPStorm + xdebug. Ставите останову на начальный вызов ядра (index.php, app.php -> Kernel) и по клавише F7 путешествуете по всем объектам, смотря где, что и как вызывается.
P.S.
Жалко вы не упомянули mail.ru - я бы много "хорошего" об этом написал. Работал там Perl а затем и php разработчиком.
По поводу моего опыта - проекты которые я разрабатывал соло или в команде, имеются в профайле.
Могу сказать, что текущий проект намного сложнее и объемнее чем booking.com и он является всего лишь очередным нашим клиентом по получению информации о отелях/квота/номерах и т.д.
Doc: Большое спасибо, за обстоятельный ответ. Правда пока я совсем не понимаю, что такое "вызов ядра (index.php, app.php -> Kernel)" , но ничего в будущем надеюсь разберусь.
avr1972: Обычно в проектах в главном публичном файле (точка входа index.php) идет сначала autoload, где подгружаются основные классы (чаще из vendor директории). Далее идет вызов какого либо bootstrap объекта/кеша и т.д. и в конце вызов ядра (чаще объект называется Kernel ) и главного метода.
Возьмите к примеру микрофреймворк (что бы много не копаться) lumen, silex или slim - посмотрите как там все устроенно.
Большинство фреймворком, cms имеют схожую архитектуру.