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

PHP从其他类调用子类的父方法

PHP从其他类调用子类的父方法,php,Php,我的项目中有3个类(连接类、父类和子类) 母公司 class Upload { public function UploadFile(){ /* some code */ } } 孩子 现在,我想创建一个可以使用其他类的方法的类 Class Example { private $db; private $ph; public function __construct( Mysqliconn $db, Photo $ph) {

我的项目中有3个类(连接类、父类和子类)

母公司

class Upload {

   public function UploadFile(){
        /* some code */     
   } 
}
孩子

现在,我想创建一个可以使用其他类的方法的类

Class Example {

private $db;
private $ph;

     public function __construct( Mysqliconn $db, Photo $ph) {

        $this->db = $db;    
        $this->ph = $ph;   
     } 

     public function callUploadPhoto() {

        $this->ph->UploadPhoto();
     }
}
以这种方式实例化

$db = new Mysqliconn();
$ph = new Photos($db);
$ex = new Example($db, $ph);
我的问题是,我可以调用其他类的方法,但不能调用引用父类的方法。 如果我调用photos类的$ex->callUploadPhoto(),它调用的是getUrl()方法,而不是父上传方法Upload()
我怎么能这样做?谢谢

尝试在未来使用新的PHP5.4.0


这可以很容易地解决您的问题…

您得到的错误到底是什么


UploadPhoto函数行2中的$name变量是什么?$this->Upload($name)?

您的示例类需要扩展Photos类。这就解决了问题。

要调用同一类的父方法,请使用
parent::somethod()
$this->somethod()和parent::somethod()在这种情况下都是相同的。我不理解这个问题-Photo extends Upload。通过继承机制,Photo拥有所有(非私有)上传方法,因此对$this->Upload in Photo的调用应该像在Photo中实现了功能一样工作。-不过有一件事:在您的示例中,您使用参数($name)定义了函数,但是在调用中,您没有给出$name。应该指出,从技术上讲,
Upload()
方法是Upload类的旧式构造函数。。这是自找麻烦。@Ben我怎么能用“新风格”做到这一点?谢谢,我不得不使用PHP5。3@fruityp如果我们使用特征,那么我们可以很容易地映射出这种方法。。。去阅读关于性格特征的文档,除非你投了反对票here@Kalpit我知道特性是什么,OP没有使用它们,这将避免他/她遇到的问题,这对学习PHP/OO概念没有帮助。在这种情况下,建议使用另一种方法只是为了避免手头的问题,这是没有帮助的。在哪里定义了$name?为什么不在Upload类中编写_构造来编写构造函数,然后尝试调用父类::_构造();在照片课上?对不起,我不明白我该怎么扩展。你能告诉我怎么做吗?谢谢
$db = new Mysqliconn();
$ph = new Photos($db);
$ex = new Example($db, $ph);