0

私はこのようなものを持っています:

class foo
{
   //code
}

$var = new foo();
$var->newVariable = 1; // create foo->newVariable
$var->otherVariable = "hello, im a variable";  //create foo->otherVariable

クラス foo で、外部でユーザーが定義したすべての変数 (newVariable、otherVariable など) のリストを取得できますか? このような:

class foo
{
   public function getUserDefined()
   {
      // code

   }
}

$var = new foo();
$var->newVariable = 1; // create foo->newVariable
$var->otherVariable = "hello, im a variable";  //create foo->otherVariable
var_dump($var->getUserDefined()); // returns array ("newVariable","otherVariable");

ありがとう!。

4

4 に答える 4

2

はい、get_object_vars()get_class_vars( ) を使用します:

class A {
var $hello = 'world';
}
$a = new A();
$a->another = 'variable';
echo var_dump(get_object_vars($a));
echo '<hr />';
// Then, you can strip off default properties using get_class_vars('A');
$b = get_object_vars($a);
$c = get_class_vars('A');
foreach ($b as $key => $value) {
    if (!array_key_exists($key,$c)) echo $key . ' => ' . $value . '<br />';
}
于 2012-09-20T18:42:58.433 に答える
0

あなたの目標は何ですか?私はそれはあまり良い習慣ではありません(自分が何をしているのか本当にわかっていない限り)。「$parameters」のようなクラス プロパティを作成し、そのためにセッターとゲッターを作成して、次のように使用することを検討することをお勧めします。

class foo {
    private $variables;

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

    public function getVariable($key) {
        return $this->variables[$key];
    }

    public function hasVariable($key) {
        return isset($this->variables[$key]);
    }

    (...)
 }

$var = new foo();

$var->addVariable('newVariable', 1); 
$var->addVariable('otherVariable', "hello, im a variable"); 

そして、定義された変数を取得するなど、好きなように使用できます。

$var->getVariable('otherVariable');

一部の var が既に定義されているかどうかを確認するには、次のようにします。

$var->hasVariable('someVariable')
于 2012-09-20T18:50:17.410 に答える
0

あなたの質問は明確ではありません。

$var->newVariable = 1;

上記の式のコンテキストは 2 つ考えられます

1)クラスのパブリック変数にアクセスしています。

お気に入り

class foo
{
  public $foo;
  public function method()
  {
     //code
   }
}
 $obj_foo = new foo();
 $obj_foo->foo = 'class variable';

また

2) _ getおよびを使用してクラス変数ランタイムを定義しています。_設定

class foo
{
  public $foo;
  public $array = array();
  public function method()
  {
     //code
  }
  public function __get()
  {
    //some code
  }
  public function __set()
  {
    // some code
  }


}
 $obj_foo = new foo();
 $obj_foo->bar= 'define class variable outside the class';

それで、あなたの質問はどの文脈で話しているのですか?

于 2012-09-20T18:42:46.377 に答える
0

get_class_vars() http://php.net/manual/en/function.get-class-vars.php

于 2012-09-20T18:55:53.780 に答える