Парой статические методы юзать проще (кода меньше), но может сводитс к паттерну Factory ?
1) echo Request::getUrl();
2) echo Factory::getRequest()->getUrl();
Два способы возвротят один и тотже результат, но тут парадишма. Стоит ли стремится к краткости кода, или же нет?
Спустя 11 минут, 3 секунды (23.08.2009 - 11:30) glock18 написал(а):
Цитата (prodex @ 23.08.2009 - 08:19) |
Большинство framework почти не используют статических методов |
о каких фрейморках вы говорите?
Спустя 11 минут, 48 секунд (23.08.2009 - 11:42) prodex написал(а):
Цитата (glock18 @ 23.08.2009 - 08:30) | ||
о каких фрейморках вы говорите? |
Zend, Symfony, Yii, может знаете о mzz,
Спустя 23 минуты, 8 секунд (23.08.2009 - 12:05) glock18 написал(а):
Zend и Yii используют статические методы в достаточно разумных пределах. Кое-что можно было бы еще перенести на статику, но... Это не принципиально...
В конце концов статика накладывает определенные ограничение на использование метода.
В конце концов статика накладывает определенные ограничение на использование метода.
Спустя 31 секунда (23.08.2009 - 12:05) stepan написал(а):
Как раз таки Yii использует в плотную статические методы, благодаря glock18 щас пытаюсь понять данный framework
Спустя 12 минут, 32 секунды (23.08.2009 - 12:18) prodex написал(а):
glock18
Конечно есть ограничения, но вызыв нужного метода порой через статик короче.
К примеру возьмем класс Request (его функционал думаю будет понятен), то для использования метода мы можем сделать это напрмую.
Request::getUrl();
но можно (к примеру через фабрику) Factory::getRequest()->getUrl(). Втрой вариант заметнее короче.
Суть в том, что статический метод желательно не должен активно пользоваться полями.
PS: я не пропагандирую статический подход, просто хочу определиться, что правельнее использовать в дальнейшем. Ибо не хочетс наступать на грабли,..
Конечно есть ограничения, но вызыв нужного метода порой через статик короче.
К примеру возьмем класс Request (его функционал думаю будет понятен), то для использования метода мы можем сделать это напрмую.
Request::getUrl();
но можно (к примеру через фабрику) Factory::getRequest()->getUrl(). Втрой вариант заметнее короче.
Суть в том, что статический метод желательно не должен активно пользоваться полями.
PS: я не пропагандирую статический подход, просто хочу определиться, что правельнее использовать в дальнейшем. Ибо не хочетс наступать на грабли,..
Спустя 1 час, 44 минуты, 40 секунд (23.08.2009 - 14:03) glock18 написал(а):
Цитата (prodex @ 23.08.2009 - 09:18) |
Request::getUrl(); |
Цитата (prodex @ 23.08.2009 - 09:18) |
Factory::getRequest()->getUrl(). |
Цитата (prodex @ 23.08.2009 - 09:18) |
Втрой вариант заметнее короче. |
Я не понял. Это как? По мне, первый короче. Если для вас количество символов в записи команды играют критическую роль, то да. Статический метод getUrl рулит в первом случае.
У второго вариант есть как минимум три плюса:
1. класс у Request фактически может быть любой. можно унаследовать у Request, перегрузить несколько методов и получить другой Request, с которым прекрасно будет работать 2 вариант. 1 не будет, потому что придется переписывать все обращения к методу.
2. Оперирование с объектами дает кое-какие плюсы. Т.к. например, использование магических методов и т.п. Плюс, фактически, использование синглтона позволяет расходовать небольше памяти, чем использование статического метода (все таки объем памяти занимаемый самим объектом, без его членов, пренебрежимо мал), зато являет собой оперирование с объектом.
3. Еще несколько нюансов синтаксиса php. кое-что сам синтаксис не позволяет делать со статикой, но позволяет с объектами.
Спустя 47 минут, 42 секунды (23.08.2009 - 14:50) prodex написал(а):
glock18
Спасибо за столь развернутый ответ.
Спасибо за столь развернутый ответ.