[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Статические методы
prodex
Большинство framework почти не используют статических методов, с чем это связано?

Парой статические методы юзать проще (кода меньше), но может сводитс к паттерну 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)
Цитата (prodex @ 23.08.2009 - 08:19)
Большинство framework почти не используют статических методов

о каких фрейморках вы говорите?

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: я не пропагандирую статический подход, просто хочу определиться, что правельнее использовать в дальнейшем. Ибо не хочетс наступать на грабли,..

Спустя 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
Спасибо за столь развернутый ответ.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.