如何从字符串中创建一个包含打印对象的对象

时间:2013-04-09 02:49:08

标签: php string codeigniter object

我有一些代码:

测试控制器:

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

Test2控制器:

        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对象?

2 个答案:

答案 0 :(得分:1)

你遇到的主要问题是file_get_contents返回一个带有url输出的字符串。因此$str只是一个字符串,甚至演员也不会改变它。

如果要将其转换为对象,则可以json_encode(或序列化)并在测试中输出该对象。然后test2必须json_decode($str)来重新创建对象。

答案 1 :(得分: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