PHP对象属性赋值丢失问题?

WBOY
Release: 2016-06-06 20:37:13
Original
1138 people have browsed it

<code><?php class demo
{
    public $name;
    public function test1()
    {
        $this->name = 'zhangsan';
    }

    public function test2()
    {
        print_r($this->name);
    }

}

$obj = new demo();

$obj->test1();

$obj->test2(); // 输出 zhangsan


我在一个PHP文件里面执行结果如上,但是我用框架开发网站测试调用的时候执行流程如下:
1.我的test1方法跳到模板 ,并且方法里将$name 赋值了 'lisi'
2.模板提交的时候提交到了test2,并且打印出属性$name为空

这是为啥呢??
</code>
Copy after login
Copy after login

回复内容:

<code><?php class demo
{
    public $name;
    public function test1()
    {
        $this->name = 'zhangsan';
    }

    public function test2()
    {
        print_r($this->name);
    }

}

$obj = new demo();

$obj->test1();

$obj->test2(); // 输出 zhangsan


我在一个PHP文件里面执行结果如上,但是我用框架开发网站测试调用的时候执行流程如下:
1.我的test1方法跳到模板 ,并且方法里将$name 赋值了 'lisi'
2.模板提交的时候提交到了test2,并且打印出属性$name为空

这是为啥呢??
</code>
Copy after login
Copy after login

想到的几种可能

1.不是同一个实例

前后引用对象的方式是否真的引用到同一个实例上?

2.有魔术方法改变了行为

<code>php</code><code><?php class BadAss {
    function __set($name, $value) {
        $this->{self::confuse($name)} = $value;
    }

    private static function confuse($name) {
        return substr($name, 0, 4) !== 'bad_' ? "bad_$name" : $name;
    }
}

$o = new BadAss;
$o->name = 'value';

var_dump($o);//bad_name => value
</code>
Copy after login

是一个实体么

你要获取$name 直接使用$obj->name 不就获取了。

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template