0

私はいくつかのコードを持っています:

テスト コントローラー:

        Class test extends CI_Controller{
            public function print_object(){
                 $x = (object) array('a'=>'A', 'b'=>'B', 'C');
                 echo '<pre>'.print_r($x, true).'</pre>';
            }
        }

テスト 2 コントローラー:

        Class test2 extends CI_Controller{
            public function get_printed_object(){
                 $url = "http://localhost/project/test/print_object";
                 (object) $str = file_get_contents($url);
                 echo $str->a; //won't make it. resulting error
            }
        }

この線

echo $str->a;

警告が発生しました:非オブジェクトのプロパティを取得しようとしています

文字列に出力された $x オブジェクトを作り直すことはできますか?

4

2 に答える 2

1

あなたが抱えている主な問題file_get_contentsは、URLの出力で文字列を返すことです。$strしたがって、文字列のみであり、キャストでさえそれを変更しません。

それをオブジェクトに変換したい場合は、json_encode (またはシリアル化) してテストで出力できます。次に、test2 はjson_decode($str)オブジェクトを再作成する必要があります。

于 2013-04-09T03:01:47.360 に答える
0

ネイティブserialize()unserialize()関数を使用する必要があります。オブジェクトをシリアル化すると、すべての情報を含む json のような (json ではなく、似ている) 文字列が取得されます。シリアル化を解除すると、シリアル化されたオブジェクトのクローンが取得され、通常の方法でそのメソッドとプロパティにアクセスできます。

この関数については、php マニュアルを参照してください。

http://php.net/manual/en/function.unserialize.php

http://php.net/manual/en/function.serialize.php

クールな例のこの最後のページ:

http://php.net/manual/en/language.oop5.serialization.php

于 2013-04-09T03:18:56.300 に答える