Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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_Class_Oop - Fatal编程技术网

在PHP中重写类中的函数

在PHP中重写类中的函数,php,class,oop,Php,Class,Oop,因此,我在一个PHP类中有一个函数,我希望为另一个类(扩展类)提供该函数的修改版本 我会在扩展类中用修改重新创建类吗?在我的扩展类中,如何让函数以不同的方式工作?您可以覆盖子类中的方法,如下所示: <?php class A { public function printText($param) { echo 'foo'; } } class B extends A { public function printText($param) {

因此,我在一个PHP类中有一个函数,我希望为另一个类(扩展类)提供该函数的修改版本


我会在扩展类中用修改重新创建类吗?在我的扩展类中,如何让函数以不同的方式工作?

您可以覆盖子类中的方法,如下所示:

<?php

class A {
    public function printText($param) {
        echo 'foo';
    }
}

class B extends A {
    public function printText($param) {
        // Optional: This will call the printText method from the parent class A
        parent::printText($param); 

        echo 'bar';
    }
}

$instanceA = new A();
$instanceA->printText('sampleArg'); // Result: foo

$instanceB = new B();
$instanceB->printText('sampleArg'); // Result: foobar

/* EOF */

您可以覆盖子类中的方法,如下所示:

<?php

class A {
    public function printText($param) {
        echo 'foo';
    }
}

class B extends A {
    public function printText($param) {
        // Optional: This will call the printText method from the parent class A
        parent::printText($param); 

        echo 'bar';
    }
}

$instanceA = new A();
$instanceA->printText('sampleArg'); // Result: foo

$instanceB = new B();
$instanceB->printText('sampleArg'); // Result: foobar

/* EOF */

因为在原始类中,函数应该以某种方式工作。在扩展类中,我想要一个稍有不同但基本相似的功能。@User016在OOP中覆盖函数是一个非常常见的需求,因为在原始类中,函数应该以某种方式工作。在扩展类中,我想要一个稍有不同但基本相似的功能。@User016覆盖OOPSo中的函数是一个非常常见的需要,因此类B将只输出“bar”?是的,仅
bar
。您也可以在子方法中调用父方法。使用
parent::printText('blah')
和方法
B::printText
prints
foobar
;那么B类只会输出“bar”吗?是的,只有
bar
。您也可以在子方法中调用父方法。使用
parent::printText('blah')
和方法
B::printText
prints
foobar