Здравствуйте уважаемые php программисты. Хотелось бы задать вам несколько вопросов про паттерн mvc. Саму структуру я понимаю т.е. что такое модель, контроллер, вид и как они взаимодействуют. Но вопрос в велосипеде. Просто ради практики решил написать эту структуру, но столкнулся с проблемами. Во первых я незнаю как взаимодействуют файлы ядра. Я понимаю что у этой структуры одна точка входа. А из точки входа вызываются классы ядра. Так вот вопрос: с какого класса начинается выполнение скрипта. И если можно объясните можно ли использовать front controller как фабрику для создания объктов. И второй вопрос насчёт SPL как с помощью неё автоматически подключать файлы и где надо её использовать. На данный момент у меня написан только файл входа=) Заранее спасибо!!!
Во первых MVC не догма. Есть мнение, что для веба эта концепция вообще плохо применима. Во вторых лучше начать с изучения готовых устоявшихся фреймворков. Я бы посоветовал CodeIgniter, т.к. он декларируется как эмвиси и у него отличная документация.
Код (Text): class AutoLoader { public function Register() { spl_autoload_register(array($this, 'AutoLoad')); } public function AutoLoad($className) { $controllerPath = $_SERVER['DOCUMENT_ROOT'] . '/' . str_replace('\\', '/', $className) . '.php'; (file_exists($controllerPath)) ? include_once($controllerPath) : Route::ErrorPage404(); return; } } $autoLoader = new AutoLoader(); $autoLoader->Register(); Типо такого, ну раз это автозагрузчик, то понятное в дело в самом начале
Как правило в веб-приложении кроме MVC есть еще несколько логических элементов Часто вводится понятие роутера - это тот код, что определит на основе входных данных - что вызывать, какой метод контроллера. Ну и, конечно, должен быть какой-то инициализационный код. Какой-то класс приложения, который как раз и запускается из вашего index.php а дальше уже что-то делает... например, вызывает роутер.
Сразу хочу дать вам совет - никогда не применяйте паттерны и вобще ООП, если не уверены что они вам нужны. Разумеется, это не касается теоретической стороны вопроса.
@Yonex Почитал комменты ерунду понаписали вцелом, а по делу не ответили, начни с простого, модель - работа с данными, контроллер - работа с моделями и отображениями (вьюхами), отображение (вьюхи) работа с выводом . При этом, совсем не обязательно это будет реализованно в ООП. Но ООП поможет тебе содержать код в чистоте, но если ты не понял до конца зачем придуманно было ООП, то порядка не будет и вернись к функиональному программированию, разберись, вникни и пойми что ООП все же прикольней, перепиши в ООП стиле. А по делу, фронтконтроллер незачем юзать как фабрику, все нужное для работы системы надо делать ОДИН раз инициализацию всех зависимостей ресурсов и прочей ереси, при этом должно быть закешировано, собранно и пр. Не понятно что за точка доступа. Если это точка обработки запросов, то да речь о контроллере, если речь в целом о запуске приложения, то начинать надо не о контроллере, а об приложениии в целом... а вообще исходя из топика, советую ознакомиться с очень полезной книженцией, Мэтта Зандстры "PHP. Объекты, шаблоны и методики программирования", но опять же ПРИ УСЛОВИИ что вы знаете PHP не менее чем на 4ку по 5ти бальной шкале. P.S.: Начет шаблонов, вещь как ты потом увидишь абстрактная. Пишешь код сам по себе - тебе они, наверное и не нужны будут, просто потом увидишь что многие из них ты и так юзал, просто не знал что это как то называется, многие действительно окажуться интересным решением, которое ты просто не догадался или не смог релизовать. Самое главное при погружении в шаблоны это путь познания, их надо изучать только тогда когда уже есть опыт работы с технологией и ООП вцелом, а изучать технологии и ООП по шаблонам, очень не верное решение многое будешь использовать не понимая зачем тебе это использовать. И еще один большой плюс в шаблонах, - это удобное общение в команде! Ты одним термино коллеге сразу объясняешь модуль кода, а не как это у многих, "ну это та х.ня, которой дергаешь вон ту зал..пу" сорри за некрасивую фразу, зато думаю доходчиво получилос.