[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по диманическим методам
ILL-JAH
<?php
class training3

{
public function setProp($propName, $propValue)
{
$this->$propName = $propValue;
}

public function __call($method, $params)
{
return $params[0].'xxx';
}
}


//Пример использования:
$obj = new training3();
$obj->setProp('tempProp1', 'тестовое значение');
echo $obj->tempProp1;//выводит: "тестовое значение"
echo '<br />';

echo $obj->dynamicMethod('zzz');
echo '<br />';
echo method_exists($obj, 'dynamicMethod');// НИЧЕГО НЕ ВОЗВРАЩАЕТ. Почему?
?>




Спустя 49 минут, 30 секунд (10.10.2012 - 13:44) Invis1ble написал(а):
var_dump(method_exists($obj, 'dynamicMethod'));

Спустя 1 час, 14 минут, 10 секунд (10.10.2012 - 14:58) killer8080 написал(а):
Цитата (ILL-JAH @ 10.10.2012 - 12:54)
echo method_exists($obj, 'dynamicMethod');// НИЧЕГО НЕ ВОЗВРАЩАЕТ. Почему?

потому что метод не существует! method_exists возвращает булевый false, при выводе через echo происходит неявное приведение к string. FALSE превращается в пустую строку ''.
А теперь вопрос на засыпку, что выведет
echo '';
? :)

Спустя 31 минута, 1 секунда (10.10.2012 - 15:29) Michael написал(а):
ILL-JAH, это чисто со свойствами такая фишка.
Мог бы просто
$obj->tempProp1 = 'что то';

Методы - это другая история, это не данные.

Спустя 4 часа, 21 минута, 47 секунд (10.10.2012 - 19:51) ILL-JAH написал(а):
Цитата (killer8080 @ 10.10.2012 - 11:58)
потому что метод не существует!

Почему метод не существует? Он же создаётся скриптом динамически.

Спустя 7 часов, 28 минут, 13 секунд (11.10.2012 - 03:19) Invis1ble написал(а):
ILL-JAH
Цитата
Почему метод не существует?

ты сам себе ответил вторым предложением

Спустя 4 часа, 49 минут, 42 секунды (11.10.2012 - 08:09) killer8080 написал(а):
ILL-JAH
смотри пример в мануале
http://php.net/manual/ru/function.method-exists.php#101507

Спустя 5 часов, 37 минут, 17 секунд (11.10.2012 - 13:46) ILL-JAH написал(а):
Пасиб, ребят. Об is_callable я не знал.
Значит method_exists() работает только со статически (изначально) объявленными методами. Я правильно понимаю?
Быстрый ответ:

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