php setter和getter无法正常工作

时间:2015-02-15 23:52:04

标签: php oop get set

我的php getters和setter似乎没有正常工作。这是我的代码。 test.php文件包含以下内容......

class test{
    private static $instance;
    private $name=null;

    public static function getInstance(){  
            if(!isset(test::$instance) ) {  
                test::$instance = new test();  
            }  
           return test::$instance;  
         }

    public function setName($n){
        $this->name=$n;
    }

    public function getName(){
        return $this->name;
    }

test2.php有一个表单,要求用户输入自己的名字。当他们点击提交时,我有一个看起来像这样的代码,用于将他们输入的名称设置为test中的变量名。

$test=test::getInstance();  
$test->setName("My PHP Test");
print "The name is " . $test->getName() . "<br />;

The name is My PHP Test已成功打印。

但是,一旦他们在test2.php上提交了一个表单,该表单将用户带到test3.php并尝试使用相同的代码返回名称,则返回的值为null。

$test=test::getInstance();  
print "The name is " . $test->getName() . "<br />;

The name is已打印。

我已将include('test.php');添加到每个文件中,但这没有帮助。

我的代码中是否有错误?这也是一般的正确方法吗?如果不是什么?

感谢任何反馈。感谢。

1 个答案:

答案 0 :(得分:3)

对象不会自动保留,您需要将数据存储在test2.php中,并使用数据库,表单或cookie在test3.php中检索它。

  

我添加了include(&#39; test.php&#39;);每个文件,但这没有帮助。

可能是因为您正在创建一个新的测试实例,它会覆盖test.php中的那个