Собственно. Таких переменных и нет, а у вас отключен E_NOTICE, чтобы PHP мог сам об этом сказать.
Переменная $controller, например, инициализируется только в том случае, если $_GET['view'] не пусто.
Да, действительно, когда я в строке написал к примеру еще ?view=main он мне выдал в дампе имя объекта, но отругался на пустой метод, ввел ?view=main&option=index все сработало как надо. НО по сути же не работает Route::ErrorPage404, он же должен был сработать еще до создания объекта, при проверке существования класса в условии.
И сразу тогда еще один вопрос: что мне тогда делать объектом и классом по умолчанию? Проверять
Сделайте var_dump($controller, $action);
Что-то потеряли.
Сделал - получил NULL NULL
Warning: call_user_func() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in W:\home\localhost\www\avtocms\core\router.php on line 40
Так все-равно та же ошибка Warning: call_user_func() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in W:\home\localhost\www\avtocms\core\router.php on line 39
В таком случае выдает ошибку Warning: call_user_func() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in W:\home\localhost\www\avtocms\core\router.php on line 39
Теперь браузер выдает ошибку Fatal error: Method name must be a string in W:\home\localhost\www\avtocms\core\router.php on line 38
Конкретно на строку $controller->$action();
Понятно, что ругается на скобки, ну т.е. что типа метод должен быть строкой.
Только теперь я не пойму как это исправить?
Вроде все маршрутизирует, но не хочет перенаправлять на страницу ошибки! Никак! Вместо этого php просто выдает в браузере ошибку, что такого класса не найдено и у меня в файле router.php ошибка в строке $controller->$action();
Где я напортачил?
Блин понял в чем ошибка! У меня адрес в строке браузера идет localhost/avtocms/
Вот он и думает что после первого слеша avtocms - это контроллер!
Не годится, надо наверное через какое-то слово определять контроллер, типа view=controller в адресной строке!
Думаю так будет лучше!
Пока что исправил, на второй слэш, чтобы запустить приложение и посмотреть как оно работает - возникла следующая проблема: Теперь перекидывает на страницу 404, т.е. срабатывает Route::ErrorPage404(); при поиске метода index
Хотя он есть в классе Main
В браузере выдает ошибку "Fatal error: Class 'avtocms' not found in W:\home\localhost\www\avtocms\core\router.php on line 30", а конкретно на $controller_obj = new $controller_name;
Только я вот теперь не пойму, что написать еще в index.php, ведь браузер же ничего не выведет, он же не знает какой контроллер мне нужен в данный момент?!
Нужен же типа "запуск приложения". Я снова в тупике (Добавление)
razorg1991 пишет:
DelphinPRO, а вот Ваш вариант мне очень понравился
Видимо так и поступлю. Достаточно тогда еще в index подключить файл автолоада и все.
Только я вот теперь не пойму, что написать еще в index.php, ведь браузер же ничего не выведет, он же не знает какой контроллер мне нужен в данный момент?!
Нужен же типа "запуск приложения". Я снова в тупике (Добавление)
razorg1991 пишет:
DelphinPRO, а вот Ваш вариант мне очень понравился
Видимо так и поступлю. Достаточно тогда еще в index подключить файл автолоада и все.
Только я вот теперь не пойму, что написать еще в index.php, ведь браузер же ничего не выведет, он же не знает какой контроллер мне нужен в данный момент?!
Нужен же типа "запуск приложения". Я снова в тупике (Добавление)
razorg1991 пишет:
DelphinPRO, а вот Ваш вариант мне очень понравился
Видимо так и поступлю. Достаточно тогда еще в index подключить файл автолоада и все.
Только я вот теперь не пойму, что написать еще в index.php, ведь браузер же ничего не выведет, он же не знает какой контроллер мне нужен в данный момент?!
Нужен же типа "запуск приложения". Я снова в тупике (Добавление)
Чето сайт тупит, извиняюсь повторные сообщения (Добавление)
Чето сайт тупит, извиняюсь повторные сообщения (Добавление)
Чето сайт тупит, извиняюсь повторные сообщения
В общем начинаю осваивать ООП, пытаюсь написать что-то вроде учебной CMS (по канонам MVC ).
Сделал следующее:
1. Создал структуру папок (models/, controllers/, templates/default/veiws/)
2. Создал файл конфига в корне (подключение к БД, пути к папкам шаблона и т.д.)
3. index.php - точку входа (в корне) Сейчас index выглядит так:
Для теста в конце вывел одно свойство контроллера - автозагрузчик работает.
Вот теперь пока ума не приложу куда впихнуть автолоадер моделей? Из индекса по MVC должен вызываться только контроллер же?
Есть идея создать отдельный контроллер-автолоадер моделей (что-то вроде родительского класса), а потом от него наследовать все остальные классы-контроллеры. Напрягает только одно - что при таком варианте постоянно придется писать extends, что по-моему не совсем красиво
Если кому не лень, можете пожалуйста привести пример кода-сравнения: обычный php + html (т.е. когда все вместе в куче) и этот же код, только переписанный под MVC (т.е. что отнесем в контроллер, что в - модель, что в -представление)
Давать ссылки на литературу не имеет смысла, потому как теории уже начитался много, а в примерах только сразу MVC и показывают.
А мне хотелось бы увидеть и сравнить самому. Просто нужен хороший пример-сравнение.