Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以访问不是对象属性的方法变量?_Php_Oop_Inheritance - Fatal编程技术网

Php 是否可以访问不是对象属性的方法变量?

Php 是否可以访问不是对象属性的方法变量?,php,oop,inheritance,Php,Oop,Inheritance,所以我有一个不允许修改的类,我需要扩展其中一个方法。问题是我的子类的方法需要在我扩展的父方法中使用一个局部变量集。我的意思是: class ParentClass { function process_data() { $data['x'] = "This is some data."; } } class ChildClass extends ParentClass { function process_data() {

所以我有一个不允许修改的类,我需要扩展其中一个方法。问题是我的子类的方法需要在我扩展的父方法中使用一个局部变量集。我的意思是:

class ParentClass 
{ 
    function process_data() 
    {
        $data['x'] = "This is some data.";
    }
}

class ChildClass extends ParentClass
{

    function process_data() {
        parent::process_data();
        $clean_data = strtolower(parent::$data);
    }
}

有没有一种方法可以在不修改父类的情况下从父方法访问本地$data变量?

您可以将其声明为在全局范围内,但是。。。这是OOP。为什么不把它作为一个属性?

n不,$data是在process\u dat scoop中定义的,也不会返回,因此无法访问它。即使我的方法是父方法的扩展,也是如此?如果父类process\u data方法返回$data['x…..你的代码会工作得很好!我想。我只是希望在这种情况下有一种像global这样的范围解析器。父方法确实调用了另一个方法,并将我需要的变量传递给它,所以我想我可以改为扩展它。没有那么干净,让我感觉像是在背驮,但有时这是错误的事情是这样的。我遗漏了什么吗?或者你可以把ParentClass::process_data的源代码复制到ChildClass::process_data,然后改变你希望如何使用$data等的代码。没有parent::process_data调用?我正在为软件编写一个定制,其中一个要求是核心代码不能修改,只能扩展。我可以扩展该方法并简单地复制整个内容,而不是调用父方法,然后进行所需的更改,但我想确认,我没有遗漏php oop的某些功能,这将有助于实现我的目标。我本周给原始开发人员写信,让他们知道他们需要将其作为属性。啊,我明白了。嗯,unl他们故意把$data变量放在本地范围内,我想你会和他们有更多的对话。祝你好运。