|
Development -
PHP
|
|
Автор: Sorbing
11.05.11 14:17
|
|
Для того, чтобы в PHP подставить динамическое имя свойства или метода класса объекта, необходимо заключить переменную содержащую имя свойства или метода в фигурные скобки.
При этом, если нам необходимо подставить из переменной имя метода, то после фигурных скобок нужно добавить обычные скобки, как если бы мы просто вызывали метод класса.
В фигурных скобках разрешено использовать конкатенацию строки с переменной:
$this->{$this->field . '_infix'}();
class User_Data
{
/**
* Имя поля, значение которого мы хотим получить
* @var string
*/
private $field = 'site';
/**
* Значение свойства $site отличается от значения метода site();
* @var string
*/
private $site = 'property.sectorit.net';
function site()
{
return 'method.sectorit.net';
}
function __toString()
{
$data = array(
// Подставляем динамическое имя свойства класса объекта
$this->field . '_property' => $this->{$this->field},
// Подставляем динамическое имя метода класса объекта
$this->field . '_method' => $this->{$this->field}()
);
print_r($data);
/*
* Что бы не выдавал ошибку:
* Catchable fatal error: Method User_Data::__toString() must return a
* string value in /home/stas/www/test/index.php on line XXX
*/
return '';
}
}
$user = new User_Data();
echo $user;
|
|
Последнее обновление: 11.05.11 14:31 |