Heim > Backend-Entwicklung > PHP-Tutorial > PHP对象属性赋值丢失问题?

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

WBOY
Freigeben: 2016-06-06 20:37:13
Original
1150 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

想到的几种可能

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>
Nach dem Login kopieren

是一个实体么

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage