search

Home  >  Q&A  >  body text

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

<?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为空

这是为啥呢??
PHP中文网PHP中文网2894 days ago334

reply all(3)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 15:27:14

    想到的几种可能

    1.不是同一个实例

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

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

    php<?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
    

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 15:27:14

    是一个实体么

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:27:14

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

    reply
    0
  • Cancelreply