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