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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Возможно ли узнать если метод требует параметров?? 
:(
    Опции темы
Shogun
Дата 17.6.2010, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: нет
Всего: 11



Здравствуйте!

Прочитал не мало доков и не нашел ничего такого но все-таки решил спросить...

Есть класс:

Код

class Class extends BaseClass
  {
    public function method($param1='', $param2=array(), $param3=NULL)
      {
        #...
      }
  }


проверка:
Код

if (class_exists('Class'))
  {
    if (method_exists('Class', 'method'))
      {
        #Ну и тут нужно както узнать требуемые параметры и их тип для этого класса ??
        #Чтото такое...
        $method_params = get_method_params('Class', 'method');
      }
  }


Возможно ли это??

И еще маленький вопрос:
Возможно ли узнать имя базового класса который расширен в данном случае классом 'Class'??
знаю про get_parrent_class('Class'); который вернет 'BaseClass'
НО - это нужно сделать при том что файл в котором находятся бызовый класс 'BaseClass' еще не импортирован...
А так получаем ошибку об не существовании этого класса (BaseClass)...

Спасибо.



Это сообщение отредактировал(а) Shogun - 17.6.2010, 02:39


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
ksnk
Дата 17.6.2010, 06:39 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(Shogun @  17.6.2010,  02:38 Найти цитируемый пост)
Прочитал не мало доков

есть еще reflection. не оно?

задачу нужно прояснить. Откуда возникла потребность вызывать неизвестную функцию с неизвестным количеством параметров?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Shogun
Дата 17.6.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: нет
Всего: 11



Цитата(ksnk @ 17.6.2010,  06:39)
есть еще reflection. не оно?

задачу нужно прояснить. Откуда возникла потребность вызывать неизвестную функцию с неизвестным количеством параметров?

ksnk - спасибо большое, мне как-то не повезло наткнутся на Reflection =)) то что надо.

А Вы не знаете как с производительностью Reflection если придется использовать частенько?? 

И можно ли решить второй вопрос??

спасибо.


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Fortop
Дата 17.6.2010, 14:40 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Shogun @  17.6.2010,  02:38 Найти цитируемый пост)
Возможно ли узнать имя базового класса который расширен в данном случае классом 'Class'??
знаю про get_parrent_class('Class'); который вернет 'BaseClass'
НО - это нужно сделать при том что файл в котором находятся бызовый класс 'BaseClass' еще не импортирован...
А так получаем ошибку об не существовании этого класса (BaseClass)...

Да? Странно...
Это явно чья-то недоработка из команды PHP.

А почему вам не захотелось подключить Class не подключая BaseClass?
Что? Тоже не получилось? К чему бы это? smile

P.S. откуда такие бредовые идеи с вопросами?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Shogun
Дата 17.6.2010, 15:46 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: нет
Всего: 11



Цитата(Fortop @ 17.6.2010,  14:40)
Да? Странно...
Это явно чья-то недоработка из команды PHP.

А почему вам не захотелось подключить Class не подключая BaseClass?
Что? Тоже не получилось? К чему бы это? smile

P.S. откуда такие бредовые идеи с вопросами?

Умник... видимо и твой статус "Эксперт" не наследует твои знания или адекватность а количество "мега-гуру-умных" постов на форуме... 
ладно проехали и ты в игнор...


для адекватных ...

Есть 2 файла с классами:

BaseClass.php
Код

class BaseClass
  {
    #содержание класса...
  }

Class.php
Код

class Class extends BaseClass
  {
    #содержание класса...
  }


В главном фаиле index.php
Код

require 'Class.php';

#тут как-то нужно отключить или перехватить ошибку об не существовании базового класса
#и получить его имя
$base_class = get_base_class_name('Class'); #Чтото такое

#ну и импортировать его фаил
require $base_class.'.php';

#дальше уже нормальная работа с классом
$class = new Class();


Есть идеи?? 



Это сообщение отредактировал(а) Shogun - 17.6.2010, 15:48


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
ksnk
Дата 17.6.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Shogun
Дата 17.6.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: нет
Всего: 11



Цитата(ksnk @ 17.6.2010,  16:13)
autoload?

ksnk - нет... autoload тут поможет загрузить только фаил для 'Class' а нужно чтобы он загрузил и базовый класс, имя котого не известно... понимаете о чем я??


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
skyboy
Дата 17.6.2010, 16:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(Shogun @  17.6.2010,  15:43 Найти цитируемый пост)
а нужно чтобы он загрузил и базовый класс, имя котого не известно... понимаете о чем я?? 

ну, так в коде же написано:
Цитата

...extends BaseClass

неужель ты думаешь, что в масштабных фреймворках только "конечные" по иерархии классы подключаются autoload'ом, а все базовые надо подключать вручную?  smile 
PM MAIL   Вверх
Shogun
Дата 17.6.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: нет
Всего: 11



Цитата(skyboy @ 17.6.2010,  16:48)
Цитата(Shogun @  17.6.2010,  15:43 Найти цитируемый пост)
а нужно чтобы он загрузил и базовый класс, имя котого не известно... понимаете о чем я?? 

ну, так в коде же написано:
Цитата

...extends BaseClass

неужель ты думаешь, что в масштабных фреймворках только "конечные" по иерархии классы подключаются autoload'ом, а все базовые надо подключать вручную?  smile

Оххх... smile спасибо ksnk и skyboy. =)) с этим понятно... 


Тему вроде можно закрыть... ;)

Это сообщение отредактировал(а) Shogun - 17.6.2010, 17:38


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
MoLeX
Дата 18.6.2010, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Shogun, не груби. Fortop на счет mvc oruter прав!


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

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


 




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


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

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