![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Bog d`An |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 26.3.2005 Где: Украина:Днепропет ровск Репутация: нет Всего: 3 |
Как можно получить имя класса внутри статической функции этого класса?
или посоветуйте, пожалуйста, какой-нибудь другой метод дабы
преобразовать в нечто такое
чтобы результат был одинаков:
Это сообщение отредактировал(а) Bog d`An - 2.10.2009, 12:38 --------------------
Удача откроет двери даже там, где их нет.Генри Морган--------------------[Furry team][Agent`s team][СРУКер] |
||||||
|
|||||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Для того, что бы получить имя класса в статическом методе необходимо вызвать метод get_class() без параметров или воспользоваться магической константой __CLASS__
Если же необходимо получить имя класса-наследника, то это возможно только в PHP >= 5.3 при помощи Late Static Bindings и метода get_called_class Это сообщение отредактировал(а) sTa1kEr - 2.10.2009, 13:18 |
|||
|
||||
Bog d`An |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 26.3.2005 Где: Украина:Днепропет ровск Репутация: нет Всего: 3 |
Да, нужно было именно последнее. Как жаль что самое вкусное ещё не скоро можно будет использовать широко)
--------------------
Удача откроет двери даже там, где их нет.Генри Морган--------------------[Furry team][Agent`s team][СРУКер] |
|||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
||||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
|
||||
|
|||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
могу привести авторитетное мнение
![]() http://phpclub.ru/talk/showthread.php?post...1184#post871184 могу даже свои мысли по этом поводу высказать: это как минимум "неправильно", нестандартно/неочевидно (синглтон обычно узнают по методу get_instance в классе, а не по extends Singleton), кроме того будут небольшие сложности при необходимости унаследовать B от кого-то еще. И это сложно назвать Singleton'ом. Зато удобно. еще интересная дискуссия на тему правильности здесь |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Где вы увидели в названии класса "A" слово "Singleton"?
|
|||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
ну как-то напоминает... а вы согласны что теоретически так делать не стоит? Это скорее удобно (практически). В любом случае, я бы не сказал, что late static binding очень нужная штука /* интересно, можно ее синтаксическим сахаром назвать :-? */
Это сообщение отредактировал(а) youri - 3.10.2009, 21:01 |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
||||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
тогда я не совсем понимаю. Если A - Singleton, то там наследование исключительно ради Singleton'а. Если A - не Singleton, то как будет выглядеть наследование ради Singleton'а? И ради чего еще можно наследоваться? ну если считать, что это должен быть обязательно синтаксис, то, конечно, нельзя |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
А - Singleton с некоторым функционалом, который (функционал) мы хотим унаследовать.
|
|||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
а почему наследоваться исключительно ради Sinleton'а бессмысленно? Слишком мало кода, причем код стандартный?
|
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Была такая проблема, решается паттерном AbstractFactory.
|
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
По тем же причинам, что вы приводили в своем посте. А в некоторых случаях можно решить ее проще - наследованием. Действительно, есть такая буква в этом слове. |
|||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
т.е. если наследоваться только ради Singleton, то плюсы этого решения (исключение дублирования кода), не перевешивают минусы, потому что кода немного и он стандартный. Если же есть дополнительная функциональность, то это может иметь смысл. Но еще есть альтернативный вариант - агрегация. Все зависит от цели наследования: наследование реализации/интерфейса. Для наследования реализации, думаю, лучше подойдет агрегация. В общем пример до сих пор слишком абстрактный p.s. а как тут AbstractFactory поможет? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |