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 回答