Используйте переменную для описания переменной класса - PullRequest
0 голосов
/ 20 декабря 2011

В основном я хочу получить доступ к переменной класса, но я изменяю имя нужной переменной динамически. У меня возникли проблемы с точным объяснением, но посмотрите мой код, возможно, он станет более понятным:

$requirement = array('req1','req2');
foreach($requirements as $requirement)
        {
            // CHECK FOR REQUIRED PARAMETERS
            if(!isset($this->$requirement)) { echo 'foo'; }
        }

Итак, я действительно хочу получить доступ к $this->req1 и так далее, но как мне получить к нему доступ с помощью моей переменной-итератора? Я не уверен, что это уже правильно, возникают трудности с выяснением.

Кроме того: Как мне получить доступ к переменной родителей в той же ситуации?

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

$$ (или используйте магические добытчики / сеттеры)

if(!isset($this->$$requirement)) { echo 'foo'; } 

или

if(!isset($this->{$requirement})) { echo 'foo'; } 
1 голос
/ 20 декабря 2011

Я бы использовал магические добытчики и сеттеры, как сказал Марк.Как это:

<?php

class MyClass
{
    protected $data;

    public function __get($key)
    {
        return $this->data[$key]
    }

    public function __set($key, $value)
    {
        $this->data[$key] = $value;
    }
}

$var = 'adsdas';
$var2 = 'sadkajds';

$obj = new MyClass;
$obj->$var = 1;
$obj->$var2 = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...