Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Урок №19 - Немного о паттернах [3]
Strict standards: Static function Db_Adapter::getInstance() should not be abstract in C:\xampp\htdocs\coding.dev\www\Lib\Db\Adapter.php on line 9
EuGen
Отправлено: 07 Декабря, 2011 - 16:19:19
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Можно убрать abstract из объявления метода.
Дело здесь в том, что в php-не-помню-до-какой-версии (подозреваю, что до 5.1 включительно), при наследовании статические методы не переопределяются, а по-прежнему принадлежат к классу, в пределах которого они объявлены. Это приводит к тому, что когда вызывается метод, якобы реализующий абстрактный статический метод родителя, на самом деле происходит попытка вызова статического родительского метода (т.к. он не переопределен), что, естественно, приводит к ошибке (т.к. метод - абстрактный и без реализации его вызвать нельзя).
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 07 Декабря, 2011 - 16:20:29
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
По поводу имени layout, решил добавить в конфиг новый элемент
Fatal error: Non-abstract method Db_Adapter::getInstance() must contain body in C:\xampp\htdocs\mvc.dev\www\Lib\Db\Adapter.php on line 9
(Добавление)
и еще EuGen к вам такой вопрос, как задать контроллер по умолчанию, то есть для обращения к сайту без передачи переменной гет
я не прошу готового решения, а всего лишь верного направления в котором стоит продолжать
EuGen
Отправлено: 07 Декабря, 2011 - 16:30:08
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
vlom пишет:
Fatal error: Non-abstract method
Ах, ну да. Конечно, я имел ввиду - сделать метод неабстрактным (неточно выразился - это не просто убрать слово "abstract", но и тело дописать собственно).
Вот только я не могу сказать, переопределится ли он. Иными словами, если не может реализоваться абстрактный метод, то я не могу быть уверенным, что переопределится неабстрактный.
Могу сказать лишь, что урок создавался на php 5.2
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Нет, метод run переделывать не нужно. Достаточно создать способ динамического задания списка маршрутов (то, что есть $this->routes ) - если посмотрите, как список маршрутов формируется в текущей версии, думаю, поймете.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 07 Декабря, 2011 - 17:13:00
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
Я немного видать не правильно понял изначально суть данного массива $this->routes и думал что это для парсинга $_GET массива.
Но насколько сейчас разобрался, это для отделения подкаталогов, в котором может находится сайт и как раз таки переменных массива $_GET.
Но опять же что-то такое понял, а может и не правильно.
EuGen
Отправлено: 07 Декабря, 2011 - 17:49:31
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
По сути $this->routes задает правила разбора пришедшего запроса, то есть является набором маршрутов. Об этом и сказано в тексте самого урока.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 07 Декабря, 2011 - 18:13:40
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
EuGen пишет:
По сути $this->routes задает правила разбора пришедшего запроса, то есть является набором маршрутов. Об этом и сказано в тексте самого урока.
Это я уже понял, но все равно не фига не могу придумать как создавать маршруты динамически.
EuGen
Отправлено: 07 Декабря, 2011 - 18:24:45
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
vlom
Подсказка - динамически, это:
- Через конфиг
- Через БД
- В виде параметра через массив
- ... все, что захотите еще
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 07 Декабря, 2011 - 18:36:21
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
EuGen пишет:
vlom
Подсказка - динамически, это:
- Через конфиг
- Через БД
- В виде параметра через массив
- ... все, что захотите еще
То есть не используя регулярок, сразу прописывать допустимые маршруты для сайта??? К примеру:
router.ini
(Добавление)
и походу опять возникает вопрос, можно ли будет скрыть в uri название контроллера и действия???
EuGen
Отправлено: 07 Декабря, 2011 - 18:55:11
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
vlom
Как вариант - сделать несколько "базовых" маршрутов и дополнительно - несколько "особенных".
По поводу скрытия - пожалуйста, берите любой алгоритм шифрования (или придумайте свой) и "расшифровывайте" пришедший запрос. Таким образом названия контроллеров и действий будут скрыты. Только зачем это может понадобиться - ума не приложу.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vlom
Отправлено: 07 Декабря, 2011 - 19:01:37
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
EuGen пишет:
По поводу скрытия - пожалуйста, берите любой алгоритм шифрования (или придумайте свой) и "расшифровывайте" пришедший запрос. Таким образом названия контроллеров и действий будут скрыты. Только зачем это может понадобиться - ума не приложу.
Наверное опять не ясно изъясняюсь я. Есть старый сайт, на нем есть статьи.
ссылки вида
site.ru/news/1/342 (1 - id категории, 342 - id новости)
а в случае с данной системой mvc получатся ссылки
site.ru/news/show/1/342
сейчас хочу перенести его на новый двиг и не хотелось бы делать редирект через хацкес со старых ссылок на новые, уж очень он станет раздутым.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.