小编col*_*ops的帖子

抽象方法返回时,PHP成员数据丢失

这是一个抽象类和派生类的示例.在类A中有一个抽象方法"collectData",它在类B中实现.当调用方法"getData"时,调用"collectData",在私有成员变量"$ data"中设置值.之后,getData返回此变量的内容.如果你运行它,你会期望返回值是数组(1,2,3).但它是一个空阵列.为什么?顺便说一句,我正在使用PHP 5.3.10.

<?php

abstract class A
{
    private $data;

    public function __construct()
    {
        $this->data = array();  
    }

    abstract protected function collectData();

    public function getData()
    {
        $this->collectData();
        return $this->data;
    }
}

class B extends A
{
    protected function collectData()
    {
        $this->data = array(1, 2, 3);
    }
}

$test = new B();
$data = $test->getData();
print_r($data);
Run Code Online (Sandbox Code Playgroud)

php class abstract

1
推荐指数
1
解决办法
225
查看次数

标签 统计

abstract ×1

class ×1

php ×1