Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызвать статический метод класса 
V
    Опции темы
o.s.a.
Дата 10.7.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Код

<?php
class myClass
{
  static public function func() {echo "o.s.a.";}
}

$ClassName = "myClass";

myClass::func(); // работает

// а нужно что-то типа:
$ClassName::func();
?>

Т.е. нужно вызвать метод класса, имея имя класса в переменной. 


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
szz
Дата 10.7.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Ха-ха-ха...  я чуть от смеха не умер...
Выводит ошибку:
Цитата

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in D:\htdocs\index.php on line 9

  Это на кого зендовцы расчитали?..   Это ж на иврите!  PAAMAYIM_NEKUDOTAYIM значит "Дважды двоеточие"  )))

Добавлено @ 20:37 
Я бы написал 
Код
eval("$ClassName::func();");
 и не мучался 


--------------------
PM   Вверх
o.s.a.
Дата 10.7.2006, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Цитата(szz @  10.7.2006,  22:34 Найти цитируемый пост)
Это на кого зендовцы расчитали?..   Это ж на иврите!  PAAMAYIM_NEKUDOTAYIM значит "Дважды двоеточие"  )))  

Ва ха ха  smile 

и все таки, что можете предложить?

Добавлено @ 20:44 
szz, спб. проканало 


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
szz
Дата 10.7.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата

Ва ха ха


   Да, протупили наши израильские обкурки )))   Видимо, из Египта хорошую ганджу привезли  smile

Добавлено @ 20:53 
И кстати, ты особо не злоупотребляй эвалом - а то он не оптимизируется.
  И ваще, как сказал один умный дядя "если вам приходится пользоваться эвалом - значит у вас что-то не так спроектировано". 


--------------------
PM   Вверх
vasac
Дата 11.7.2006, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Код

call_user_func( Array( $ClassName, 'func' ) );
 
PM WWW   Вверх
AztEK
Дата 11.7.2006, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



 smile  Здорово
Код

$$ClassName::func();
 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
o.s.a.
Дата 11.7.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



vasac, у тебя самое правильное решение, спб

З.Ы. 
AztEK, ты хотя бы попробовал, а потом писал  smile  


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
AztEK
Дата 11.7.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Цитата(AztEK @  11.7.2006,  11:55 Найти цитируемый пост)
$$ClassName::func();

Ммм...Да...Извиняюсь 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
szz
Дата 11.7.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



call_user_func - это тот же эвал, но в другой обертке. 

  Что-то не так в проектировании!!!
 Подумайте, почему приходится НАСТОЛЬКО динамически обращаться к названию класса?

   Может стоит сделать иерархию наследования и полиморфировать?
   Впрочем, все зависит от контекста.
  Опишите пожалуйста ситуацию, мне интересно подумать о решении без эвала. 


--------------------
PM   Вверх
o.s.a.
Дата 11.7.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



szz, гляди:
Цитата

Вакансия веб-программиста

На постоянную работу в компанию NEXT Technology требуется веб-программист.

Требования к кандидату:
# Отличное! знание PHP, MySQL;
# Знания PosgreSQL, C/C++ и сетевых протоколов приветствуются;
# Опыт работы над серьёзными проектами;

Описание работы:
# Разработка веб-проектов совместно с группой грамотных специалистов;

Как устроиться?

Пришлите нам свое резюме и/или краткий рассказ о себе, включая ссылки на выполненные проекты и самую интересную на Ваш взгляд часть PHP кода.

 

Нам было бы проще сложить о Вас впечатление, получив от Вас результат одного из трех тестовых заданий:
Язык программирования: PHP

1. Написать рекурсивную версию построения дерева по данным, хранящимся в БД в иерархическом виде (отношение "родитель-потомок"). Дерево должно иметь вид массива, где дети хранятся во вложенных массивах $tree['childs'].
Hint: использовать группировку и объединение.

2. Дан класс со статическим методом, вызвать статический метод имея ТОЛЬКО имя метода и переменную $ClassName с именем класса.

3. Написать простейший механизм безопасной авторизации.


Я выбрал соотв. 2-ое (мороки меньше всего), но вариант $ClassName::func(); не сработал, 
мне стало интересно, вот я и запостил на форум 


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
AztEK
Дата 11.7.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Хм...А предполагалось то наверное самому писать, а не на форумах спрашивать ;) 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Kefir
Дата 11.7.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



AztEK, на форуме спросил и узнал - значит, знаешь как написать  smile  smile  smile  
PM MAIL WWW Skype   Вверх
vasac
Дата 11.7.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Я поступил! Я поступил! [радостно хлопает в ладоши] 
PM WWW   Вверх
RomanK
Дата 11.7.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: 1
Всего: 2



А по мне... то третий пункт сделать и легче и извращаться не надо! ИМХО конечно. smile 
PM MAIL WWW ICQ   Вверх
o.s.a.
Дата 12.7.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Цитата(AztEK @  11.7.2006,  21:49 Найти цитируемый пост)
Хм...А предполагалось то наверное самому писать, а не на форумах спрашивать ;)  

Ясный пень самому, просто то, что я думал сработает, работать не стало, вот я решил тута спросить.



Цитата(RomanK @  12.7.2006,  01:03 Найти цитируемый пост)
А по мне... то третий пункт сделать и легче и извращаться не надо! ИМХО конечно. smile  

Да, мне любой не проблема написать, просто щас времени нет, потому и выбрал самое короткое решение smile  


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.