6

私はプライベートメンバー「description」のクラスを持っていますが、それはセッターを提案します:

class Foo {
  private $description;

  public function setDescription($description) { 
    $this->description = $description; 
  }
}

変数にメンバーの名前があります。フィールドに動的にアクセスしたい。フィールドが単に公開されている場合、私は次のことができます:

$bar = "description";
$f = new Foo();
$f->$bar = "asdf";

でもセッターしかいない場合のやり方がわかりません。

4

4 に答える 4

10
<?php
$bar = "description";
$f = new Foo();
$func="set"+ucwords($bar);
$f->$func("asdf");
?>
于 2012-07-23T12:42:15.167 に答える
4

これを試して:

$bar = 'description';
$f = new Foo();
$f->{'set'.ucwords($bar)}('test');
于 2012-07-23T12:44:11.717 に答える
0

マジックセッターを使用する

class Foo {
  private $description;

  function __set($name,$value)
  {
    $this->$name = $value;
  }  
/*public function setDescription($description) { 
    $this->description = $description; 
  }*/
}

しかし、このようにして、説明のためだけに必要な場合は、すべてのプライベートプロパティがパブリックプロパティとして機能します。これを使用してください

class Foo {
      private $description;

      function __set($name,$value)
      {
        if($name == 'description')
        { $this->$name = $value;
          return true;
         }
         else 
        return false
      }  
    /*public function setDescription($description) { 
        $this->description = $description; 
      }*/
    }
于 2012-07-23T12:43:20.447 に答える