0

PHP のクラスのいくつかのプロパティを JSON にエンコードしようとしていますが、メソッドが返すのは {} だけです

これが私のコードです。どこが間違っていますか?

ありがとう。

    <?php

    class Person  
    {  
        private $_photo;  
        private $_name;  
        private $_email;  


        public function __construct($photo, $name, $email)  
        {  
    $this->_photo = $photo;  
            $this->_name = $name;  
            $this->_email = $email;  

        }  



       public function getJsonData() {
          $json = new stdClass;
          foreach (get_object_vars($this) as $name => $value) {
             $this->$name = $value;
          }
          return json_encode($json);
       }


    }  


    $person1 = new Person("mypicture.jpg", "john doe", "doeman@gmail.com");  

    print_r( $person1->getJsonData() );
4

2 に答える 2

2

これは、$json 変数を使用しておらず、代わりに $this->$name を使用しているためです。どの $this も参照していますか? 私が見ているものから $json 変数を使用していません。

class Person  
{  
    private $_photo;  
    private $_name;  
    private $_email;  


    public function __construct($photo, $name, $email)  
    {  
$this->_photo = $photo;  
        $this->_name = $name;  
        $this->_email = $email;  

    }  



   public function getJsonData() {
      //I'd make this an array
      //$json = new stdClass;
      $json = array();

      foreach (get_object_vars($this) as $name => $value) {
         //Here is my change
         //$this->$name = $value;
         $json[$name] = $value
      }
      return json_encode($json);
   }


}  


$person1 = new Person("mypicture.jpg", "john doe", "doeman@gmail.com");  

print_r( $person1->getJsonData() );

問題が解決することを願っています。それが私がそれをする方法です。

于 2013-04-03T23:26:14.257 に答える
0

PHP 5.4 以降では、 JsonSerializableインターフェイスをクラスに実装します。

于 2013-04-03T23:36:26.710 に答える