<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Новый движок на сайте MyRusakov.ru

Новый движок на сайте MyRusakov.ru

Несколько лет назад я разработал свой самый первый движок, и он лёг в основу сайта MyRusakov.ru. Безусловно, первый блин был комом, поэтому спустя какое-то время (уже даже не помню какое, но небольшое), я обновил эту версию до той, что была ещё вчера. Но прошло уже несколько лет, я набрался ещё больше опыта, и кое-какие моменты в движке изменил. А заодно изменил и дизайн.

По поводу нового движка особо говорить нечего. Весь функционал остался прежний, просто некоторые вещи переписал, сократив количество кода и увеличив быстродействие сайта, а также принципиально изменил ядро. Это резко улучшило переносимость движка под другие задачи, а также улучшило саму структуру кода и упростила добавление нового функционала, но самое главное - время работы скриптов сократилось в 1.5 - 3 раза. Кстати, саму идею этого решения я взял из книги Квентина Зервеса "Web 2.0 Создание приложений". Книга достаточно сильно устарела, особенно версия Zend Framework, который там используется. Но идея по работе с объектами базы данных мне очень понравилась, поэтому я её вставил в свой движок. Вот это то, что принципиально изменилось в новой версии моего движка. Таким образом, получился выигрыш в производительности, плюс резко сократилось время разработки, также упрощён процесс переноса всего ядра сайта для создания других.

Теперь что касается дизайна. Дизайн заказывался на фрилансе (http://freelance.ru) в виде конкурса с призом в 25 000 рублей. Срок проведения был 1 месяц. И за это время было представлено в районе 30 работ, плюс ещё пару десятков всевозможных их вариаций (работа одна, но в одной один цвет преобладает, в другой - другой цвет). В итоге, я отобрал 6 лучших, на мой взгляд, работ и разместил опрос на отдельной странице у себя на сайте.

Далее я попросил всех своих клиентов (во-первых, во избежание накруток, во-вторых, я всегда говорил, что мнение моих клиентов для меня выше в разы) выбрать лучшую работу. В итоге, была выбрана работа, которую Вы сейчас и можете наблюдать. Затем ещё за 10 000 рублей, победитель конкурса сделал и все внутренние страницы.

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (74):

Admin Admin 28.03.2014 15:32:24

Тестовый комментарий...

Ответить

GendolfWhite GendolfWhite 28.03.2014 16:23:35

Да, смена дизайна безусловно освежит сайт. Смотрится просто и приятно. Сразу заметил ошибку. Авторизировался на сайте. панель авторизации осталась сверху и в правом стобце появился блок моего профиля. Скрин: http://gendolfwhite.ru/uploads/2014-03-28_192621.png

Ответить

Admin Admin 28.03.2014 16:36:13

Спасибо, исправил!

Ответить

GendolfWhite GendolfWhite 28.03.2014 16:31:51

Ещё картинки в новостях.. Если картинка в полной новости стоит с float:left; то могут возникнуть проблемы с отображением блока с исходным кодом. Вот оно обтекание.. Пример: http://myrusakov.ru/php-likes.html

Ответить

Admin Admin 28.03.2014 16:38:58

Это тоже немного по-другому сделал.

Ответить

GendolfWhite GendolfWhite 28.03.2014 16:40:51

Все таки исходный код лучше смотрелся при полном расширении, на весь блок. Не хочу навязывать, но может стоит пересмотреть способ вывода изображения к новости?

Ответить

Admin Admin 28.03.2014 16:55:19

Поставил картинку по-другому.

Ответить

GendolfWhite GendolfWhite 28.03.2014 16:35:10

Не знаю, ошибка или нет, но.. При выходе из под профиля на сайте можно было бы сделать переброс на индексную страницу.. Вот ещё что высвечивается сверху, если авторизирован: Strict Standards: Non-static method ForumSubscribeDB::getIDsOnUserID() should not be called statically, assuming $this from incompatible context

Ответить

GendolfWhite GendolfWhite 28.03.2014 16:45:30

Уф, такой косяк только на странице Управления подписками на темы форума.

Ответить

Admin Admin 28.03.2014 16:51:29

Исправлено.

Ответить

GendolfWhite GendolfWhite 28.03.2014 16:52:25

Кол-во комментариев, указанное на главной странице, не соответствует действительности :)) Перепишите функцию удаления комментариев :) Пускай обновляет счетчик после удаления :)

Ответить

Admin Admin 28.03.2014 17:09:10

Реализовал это.

Ответить

GendolfWhite GendolfWhite 28.03.2014 17:12:26

ну теперь осталось только правильное значение указать к этой новости :) Больше косяков я не нашел..

Ответить

Admin Admin 28.03.2014 17:16:13

Значение правильное, было 13, сейчас станет 14.

Ответить

GendolfWhite GendolfWhite 28.03.2014 17:17:31

у меня 25 показывает. http://gendolfwhite.ru/uploads/2014-03-28_201820.png

Ответить

Admin Admin 28.03.2014 17:24:36

Понял, не там смотрел. Исправил.

Ответить

GendolfWhite GendolfWhite 28.03.2014 17:17:02

А нет, всё таки нашел ещё косяк. Оставил на форуме сообщение. поставил галочку что бы приходило уведомление о новых ответах. отправил своё сообщение. сразу же пришло письмо на почту, мол новый ответ появился в теме.. Кроме моего ответа ничего нету. т.е. не нужное письмо.

Ответить

Admin Admin 28.03.2014 17:27:02

Исправил.

Ответить

wanderer wanderer 28.03.2014 17:47:12

Косяк не косяк,но не эстетично=) http://torrent.astranar.ru/file/2014-03-28_204526----(torrent.astranar.ru)----1396014394.png

Ответить

Admin Admin 28.03.2014 18:23:05

Это так и должно быть.

Ответить

wanderer wanderer 28.03.2014 17:49:16

Еще было бы удобно для навигации при нажатии на myrusakov.ru сверху слева на логотип, переходило бы на главную=)

Ответить

Admin Admin 28.03.2014 18:24:51

И так на страницах несколько ссылок на главную (от 2-х и больше). Добавлять ещё одну будет уже не очень хорошо для оптимизации под поисковики.

Ответить

wanderer wanderer 28.03.2014 17:50:41

Скрипт голосования на аяксе будет лучше мне кажется=)))

Ответить

wanderer wanderer 28.03.2014 17:54:14

Должно быть так или нет? http://torrent.astranar.ru/file/2014-03-28_204526----(torrent.astranar.ru)----1396014812.png

Ответить

Admin Admin 28.03.2014 18:23:35

Да, у тех категорий просто нет статей, поэтому выводится только их название.

Ответить

wanderer wanderer 28.03.2014 20:47:02

http://myrusakov.ru/forum.html?act=thread&id=1453 Суда зашел и ошибку выдает... Fatal error: Call to undefined method MainController::isContainsQuery() in /home/myrusakov.ru/www/controllers/controller_class.php on line 152

Ответить

Admin Admin 28.03.2014 21:25:15

Перешёл, указанной ошибки не обнаружил.

Ответить

wanderer wanderer 28.03.2014 20:49:13

И кстати, Михаил, сделай ты регулярку на выводимый текст в комментариях=) $str=str_replace("\n","<br>",$str);

Ответить

kuller kuller 28.03.2014 18:45:18

все хорошо. Но вот отображение курсов верху страницы сильно надоедают. Может их показывать только на главной странице сайта?

Ответить

ppk-center ppk-center 28.03.2014 18:59:37

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

Ответить

ppk-center ppk-center 28.03.2014 19:40:58

Ещё в статьях ссылки не заменяются на ЧПУ!

Ответить

alexandrdante alexandrdante 28.03.2014 20:12:39

где конкретно,Павел? пока не наблюдаю

Ответить

Admin Admin 28.03.2014 21:26:46

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

Ответить

Admin Admin 28.03.2014 21:46:13

Нашёл и исправил. Если ещё найдёте, то сообщите.

Ответить

roman3451 roman3451 28.03.2014 22:09:37

Вот тоже заметил не большой отступ значка для поиска - http://programmers.meximas.com/image.php?im=cae6c1.jpg

Ответить

madmancrazy madmancrazy 28.03.2014 22:17:33

По дизайну...белый шрифт на желтой кнопке, это вообще не вариант...тяжело читать что написано

Ответить

kuller kuller 29.03.2014 06:06:34

Вроде в комментариях ошибка есть. На почту приходит письмо что на мой комментарий ответили. Но ответа нет (сделал бы скрин, но с телефона сейчас)

Ответить

iljas-galiev iljas-galiev 29.03.2014 07:09:25

В описании курса html5 было сказано что главная страница, которую сверстаем, будет адаптивная. Почему же здесь не так?

Ответить

alexandrdante alexandrdante 29.03.2014 10:11:47

и что же тут не так? у меня во всех браузерах всё в порядке

Ответить

andrew11 andrew11 30.03.2014 00:48:30

Ильяс, а Вы попробуйте скачать браузер поновее чем IE 8, тогда у вас все заработает :)

Ответить

iljas-galiev iljas-galiev 30.03.2014 07:24:47

Вы знаете что такое адаптивность? Это когда сайт хорошо отображается на телефонах и планшетах без необходимости zoomа, чтобы увидеть текст. С телефона сайт отображается как с десктопа. С десктопа, при уменьшении размера окна вообще непонятно что! А в курсе сказано что главная страница myrusakov. ru будет адаптивная. А то что вы сказали, это кроссбраузерность, и я не уверен что вы знаете что такое html5

Ответить

andrew11 andrew11 30.03.2014 19:29:16

Ильяс, небольшая справочка (так, если Вы не знали) HTML5 и CSS3 поддерживается во всех браузерах новее IE8. У меня на компах стоят браузеры Google Chrome, Mozzila Firefox (самые новые), IE10 и у меня на телефоне WP8 с IE10 - у меня везде страница MyRusakov.ru АДАПТИРУЕТСЯ под ширину экрана, и не надо говорить, что я не знаю, что такое HTML5, я как раз-таки знаю и понимаю, о чем я говорю. А вот что именно Вас тревожит даже модератор не понял. Лично я думаю, что вам либо, как я уже говорил в предыдущем комментарии, необходимо установить новый браузер, либо повнимательнее прочитать про HTML5 и про то, что такое адаптивность.

Ответить

pavell pavell 29.03.2014 11:10:07

Я бы уроки и статьи переместил в вверх (поменял панель пользователя с левым меню уроки и статьи). Это ближе к топ меню. Да и удобней кажется.

Ответить

Admin Admin 29.03.2014 12:02:27

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

Ответить

Frederico Frederico 29.03.2014 11:48:48

Добрый день, Михаил! Я сам не пользуюсь браузером Internet Explorer, но все-такие проверил Ваш сайт через него. Вот скрин меню: http://rghost.ru/53555387/image.png Все остальное отображается очень хорошо.

Ответить

Admin Admin 29.03.2014 12:00:22

Под IE8 сайт не адаптируется (а именно в нём вид как на скриншоте), поскольку он использует HTML5+CSS3. Если у Вас более свежий IE, то убедитесь, что в средствах разработчика (F12) не стоит более старая версия.

Ответить

pavell pavell 29.03.2014 12:07:34

Здравствуйте, Павел Сашков! На Ваш комментарий на сайте MyRusakov.ru ответили. Чтобы увидеть текст ответа, пройдите по ссылке: /new-engine-2014.html#comment_10099. С Уважением, сайт MyRusakov.ru! Это сообщение которое приходит в ответ на коммент. Ссылка для просмотра комментария нерабочая.

Ответить

alexandrdante alexandrdante 29.03.2014 13:00:00

поправлено.теперь должны нормальные приходить) а так - добавьте перед ссылкой адрес сайта

Ответить

GoTo GoTo 29.03.2014 14:49:35

Не вижу рекламы Яндекс.Директ. Вы решили отказаться от рекламных блоков?

Ответить

Admin Admin 29.03.2014 17:11:12

Да, он приносил от силы 3000-4000 рублей в месяц, поэтому решил от него отказаться.

Ответить

roman3451 roman3451 29.03.2014 20:53:31

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

Ответить

brussens brussens 30.03.2014 00:15:36

Это приходит со временем) Не парься по этому поводу)

Ответить

roman3451 roman3451 30.03.2014 01:39:53

Спасибо, надеюсь на то, что всё таки я пойму ОПП.

Ответить

brussens brussens 30.03.2014 08:51:22

Это целая идеология) Сначала начни относиться ко всему, как к объектам ;) Например: Есть пользователь на сайте - это класс User. У пользователя есть имя, фамилия, возраст - это свойства;) Он умеет например регистрироваться и оставлять комментарии) И получается: class User { public $name; public $lastname; public $age; public $gender; public function registration() {} public function comment() {} } НУ и теперь твоя фантазия ;)

Ответить

roman3451 roman3451 30.03.2014 09:22:47

Да не чего выучи, как и все другие разделы по php, но на самом деле очень трудно подходит к ОПП поэтому хотелось бы от Михаила примеры, про то как правильно использовать хоть, что ни будь освежить это в голове.

Ответить

brussens brussens 30.03.2014 12:14:17

Я написал тебе выше, если не хочешь вникать, то дело твоё.

Ответить

roman3451 roman3451 30.03.2014 13:31:49

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

Ответить

v79.08 v79.08 30.03.2014 15:13:48

Привет Роман: Я тоже долго не мог понять ООП а функции заучил буквально за пару недель.Вы по этому поводу не расстраивайтесь.придёт ООП с практикой. Я лично начал немного его осозновать после как пару раз перепесал двиг в разделе создание движка с нуля. там уроки конечно долго идут но сосредоточица и внемательно слушать просто необходимо.

Ответить

roman3451 roman3451 30.03.2014 16:53:35

Спасибо, за ваш ответ, буду надеется на лучшие.

Ответить

kruty kruty 29.03.2014 18:36:15

Розкажіть про ідею роботи з об'єктами бази даних.

Ответить

brussens brussens 30.03.2014 00:46:24

Михаил, несколько "замечаний": 1. Очень неудобно, что форма для нового комментария работает при нажатии на кнопку "Новый комментарий" 2. Сделай min-width:480px, а то всё в кашу превращается при изменении размера окна. А так вообщем дизайн очень не плох)

Ответить

alexbal2050 alexbal2050 30.03.2014 11:14:05

Михаил, при изменении масштаба картина сайта совсем уж некрасивая. Скрин: http://joxi.ru/B8Q3U_3JTJAWdJtcItw

Ответить

Admin Admin 30.03.2014 13:11:33

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

Ответить

wanderer wanderer 11.04.2014 22:23:07

С моего телефона смотрится очень ужасно. Центральная часть совсем в одно слово, а сайдбары нормально вписываются. Телефон htc one m8, браузер Хром новой свежей версии

Ответить

Programma2698 Programma2698 30.03.2014 13:36:20

ОШИБКА: нажимаю PHP, потом PHP-скрипты и вылазит: Все материалы по основам CSS содержание правильное, а заголовок нет.

Ответить

Admin Admin 30.03.2014 15:53:38

Спасибо, исправил. Там вообще заголовка быть не должно.

Ответить

Beltyukovalexander Beltyukovalexander 01.04.2014 16:05:42

http://saveimg.ru/show-image.php?id=feb1464792a118cc6237636df51a8ced Так и должен быть основной текст?

Ответить

DimaEgorov DimaEgorov 30.03.2014 18:39:45

Дизайн просто ох.. Ой! Материться нельзя! Дизайн просто офигенный! Мне нравиться))

Ответить

DimaEgorov DimaEgorov 30.03.2014 18:43:39

Кстати, Михаил. Я уже задовал вопрос в поддержку, но думаю что вы мне ответите более точно. За какое время вам удалось набрать посещаемость 500 человек в сутки? В поддержке мне вообще сказали: "За короткий промежуток времени..". А какой... За минуту что ли?

Ответить

vegas vegas 30.03.2014 19:10:17

Здравствуйте! Замечательная работа проделана! Одно глаза режет (по дизайну): #topmenu a:hover, #topmenu a.active Ну не смотрятся там скругленные уголки! ИМХО, конечно ;) И бэкграунд этих ссылок на 1px вправо вылазит (на FF и Safari). Как по мне, то надо оставить либо бортики-разделители между пунктами меню, либо border-radius. Как-то так :)

Ответить

gemiks gemiks 30.03.2014 23:57:45

Еще бы не помешало добавит кнопочку вверх, а то как в этой теме долго подниматься..

Ответить

DimaEgorov DimaEgorov 31.03.2014 21:20:46

Михаил, кнопку вверх тебе не составит труда поставить на своём сайте? Просто так быстрее твой сайт прокручивать.

Ответить

Programma2698 Programma2698 07.04.2014 14:54:52

ОШИБКА: при введении в Яндексе "Как создать свой сайт", нажимаешь и выскакивает ошибка: Fatal error: Call to undefined method MainController::isContainsQuery() in /home/myrusakov.ru/www/controllers/controller_class.php on line 153

Ответить

(Алекс) (Алекс) 23.09.2014 00:21:27

Fatal error: Cannot redeclare printItem() (previously declared in /home/myrusakov.ru/www/tmpl/mainmenu.tpl:1) in /home/myrusakov.ru/www/tmpl/mainmenu.tpl on line 14 Вот такая ошибка на 404-странице.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.