[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Статические методы против обычных
alex12060
Я многое слышал о том, что статические методы работаю без образования объекта и выводятся напрямую, и, засчет этого, работают в ~10 раз быстрее, чем обычные. Но в практике, из одного большого класса я вижу только 3-4 статичесикх метода, а остальные - обычные.

Почему так? По-моему, выигрыш в скорости есть, поэтому, жить с ними проще, может, их только и использовать? Или я не знаю каких-то нюансов?

Если вопрос поставлен неккоректно, не ругайтесь smile.gif

За более полные ответы, щедро раздам плюсы. Заранее спасибо smile.gif



Спустя 12 минут, 6 секунд (8.04.2011 - 21:40) neadekvat написал(а):
Как ты заметил - статические функции не требует для работы создания объекта. А следовательно, использовать, например, $this, уже нельзя. Соответственно, и доступ у метода есть только к другим методам - члены, кроме статических, уже недоступны. А статические члены, как известно, имеют единое значение на все объекты.

Если абстрактно - есть у нас веник, совок, мусорное ведро, мусор. Так вот, вы можете потребовать подмести мусор. Но нормально управлять процессом, подмести там, где грязно, собрать все это на совок и выборосить - уже не получится. Или получится, но через такую ж, что упоминать об этом больше не буду.

Цитата (alex12060 @ 8.04.2011 - 22:28)
За более полные ответы, щедро раздам плюсы

Вот сколько сижу тут - никак не пойму. Почему на этом такой акцент всегда делают?

Спустя 15 минут (8.04.2011 - 21:55) Trianon написал(а):
alex12060
статический метод - метод, относящийся к классу в целом.
динамический метод - метод, присущий конкретному объекту.
собственно, статический метод мало чем отличается от обычной функции, разве тем, что позволяет напрямую работать со статическими свойствами данного класса (со свойствами конкретного объекта он работать уже не может) и поэтому позволяет чуть более аккуратно назначать имена статическим переменным.

Сила же ООП в динамических методах.
И если задача позволяет обойтись статическими, по большому счету ей вообще классы не нужны.

Спустя 2 минуты, 2 секунды (8.04.2011 - 21:57) twin написал(а):
Цитата
Цитата
За более полные ответы, щедро раздам плюсы



Вот сколько сижу тут - никак не пойму. Почему на этом такой акцент всегда делают?
Кто??? biggrin.gif

По теме. Очередная фишка в плане - "я не знаю что такое стиральная машина, но вот говорят, что там такая же стиральная доска, только круглая."

Статические методы предназначены для статики. Динамические - для динамики.

Класс, который определен, как статический (ну и методы тоже), работают как контейнер для функционала. Есть класс - получи результат.

Если ты работаешь с объектом, то их может быть туча в одном скрипте. С разными свойствами, но одинаковыми методами.

Изучи внимательно кто ис ху, тогда сам поймешь несостоятельность вопроса. Хотя любой вопрос очень полезен. Особенно когда в нем 99% ответа.


UPD Не успел((( Но очень букаф жалко, пусть будет два ответа

Спустя 3 минуты, 49 секунд (8.04.2011 - 22:01) neadekvat написал(а):
Цитата (twin @ 8.04.2011 - 22:57)
Кто???

Да вот хотя бы цитатку выделил выше smile.gif Не раз замечал такие слова у топикстартеров, плюс в подписе у некоторых висит упоминание о карме.

Спустя 4 минуты, 5 секунд (8.04.2011 - 22:05) twin написал(а):
Скузми)) Действительно как то хреново вышло)))
Исправил.

Спустя 3 минуты, 11 секунд (8.04.2011 - 22:08) neadekvat написал(а):
Цитата (twin @ 8.04.2011 - 23:05)
Скузми)) Действительно как то хреново вышло)))

Коль, я не то имел в виду)) Слова "вот хотя б цитатку выделил" - это было не "ты бы хоть", а "да вот хотя б к примеру - я выше цитатку выделил")
Но исправленное, действительно, логичнее смотрится.

Спустя 46 минут, 50 секунд (8.04.2011 - 22:55) inpost написал(а):
neadekvat
У меня до этой подписи было: "Если хотите отблагодарить - ставте мне МИНУС! Я плохой, я злой, но у меня есть печеньки"

Спустя 44 минуты, 44 секунды (8.04.2011 - 23:40) Trianon написал(а):
inpost
О! печеньки извлекать я еще не умею.
Только твороженные булочки. smile.gif)

а если серьёзно, кто-нибудь держит подписи открытыми?
я вижу их только в профиле.

Спустя 6 минут, 28 секунд (8.04.2011 - 23:46) neadekvat написал(а):
Цитата (Trianon @ 9.04.2011 - 00:40)
а если серьёзно, кто-нибудь держит подписи открытыми?

Я держу. В общем-то, я даже не задумывался над этим - висит что-то и висит smile.gif

Спустя 41 минута, 58 секунд (9.04.2011 - 00:28) inpost написал(а):
Trianon
А я и не знал, что можно убрать smile.gif
У меня сейчас -40, из них где-то 30 выдано за то, что у меня в подписи было написано, чтобы ставили минусы =)

Спустя 7 часов, 19 минут, 44 секунды (9.04.2011 - 07:48) alex12060 написал(а):
Почему я написал про +, так потому, что я хочу за хороший ответ давать людям положительные значения в карму. Возможно, написав это я как-то прибамбахал, но все-же...

А так, спасибо, я немного определил для себя значения, поэтому, еще в нете почитаю smile.gif

Спустя 1 минута, 40 секунд (9.04.2011 - 07:50) inpost написал(а):
alex12060
А не лучше 1 рубль?! smile.gif Так хоть будет минимум окупать потраченное время =)

Спустя 3 часа, 48 минут, 59 секунд (9.04.2011 - 11:39) alex12060 написал(а):
inpost

tongue.gif

Спустя 5 дней, 6 часов, 9 минут, 46 секунд (14.04.2011 - 17:48) Гость_Greg1978 написал(а):
Статические методы применяются для интерфейсов класса. В php 5.2 и ниже невозможно было вызвать метод динамически например $static::--- потому и применялись статические методы. Фактически статический метод это часть алгоритма перенесённая в класс, соответственно инкапсулированная сложность и методика изменений кода

Спустя 12 дней, 6 часов, 21 минута, 8 секунд (27.04.2011 - 00:09) SlavaFr написал(а):
Цитата (Гость_Greg1978 @ 14.04.2011 - 14:48)
Статические методы применяются для интерфейсов класса. В php 5.2 и ниже невозможно было вызвать метод динамически например $static::--- потому и применялись статические методы. Фактически статический метод это часть алгоритма перенесённая в класс, соответственно инкапсулированная сложность и методика изменений кода

1)немогу найти взаимосвязи между статическими методами и интерфейсом
2)5.2 и ниже мог вызывать статические методы просто другим синтаксисом
3)С остальным согласен. Просто если ООП, то нечего функциям и переменным в глобальном пространстве болтатся, хотябы по причине упращенного поиска и логической пренадлежности.

Спустя 2 дня, 22 часа, 31 минута, 29 секунд (29.04.2011 - 22:41) Guest написал(а):
1)немогу найти взаимосвязи между статическими методами и интерфейсом
А подумай ... , если статический метод открытый он кто для отдельных классов ???

2)5.2 и ниже мог вызывать статические методы просто другим синтаксисом
Учись читать посты, неужели не видно что стоит переменная в синтаксисе вызова метода.

Спустя 1 день, 20 часов, 16 минут, 52 секунды (1.05.2011 - 18:58) SlavaFr написал(а):
Цитата (Guest @ 29.04.2011 - 19:41)
А подумай ... , если статический метод открытый он кто для отдельных классов ???

подумал, вообще не понял что этим сказанно. и все еще не вижу зависимости статических методов с interface

Цитата (Guest @ 29.04.2011 - 19:41)
5.2 и ниже мог вызывать статические методы просто другим синтаксисом
Учись читать посты, неужели не видно что стоит переменная в синтаксисе вызова метода.

да какая разница как это вызывается в 5.2 или через Reflection или при помощи call_ user_ method_array или просто call_user_function, возможность вызывать статический метод динамически пресутствовала с тех пор как в пхп статические методы были придуманы. на крайняк и eval это делал.

ты к стате не стесняйся, возми да зарегистрируйся на форуме.

Спустя 8 дней, 4 часа, 42 минуты, 10 секунд (9.05.2011 - 23:40) linker написал(а):
Муть какая-то.
Быстрый ответ:

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