调用父类构造方法的无法执行其前面的代码

问题描述#

我在 PHP 中有两个类,一个是父类一个是子类。
在子类的一个方法里面调用父类的构造方法,而且给构造方法传递了一个参数,但是在父类的构造方法里面却接收不到这个参数

代码描述#

child.php

class child extends parent{
    public function __comstruct(){}
    public function method(){
    //而且我在这里直接return居然不生效,代码直接从   
    //parent::__construct($param);开始执行,也就是说前面的代码没有执行,问题应该就在这里,不理解为什么不执行。
        $param = 123;
        parent::__construct($param);
    }
}

parent.php

class parent{
    public function __construct($param){
    //在这个接收不到$param这个参数
    }
}
创梦流浪人
最佳答案

没问题啊 3v4l.org/6dj9W

1年前 评论
讨论数量: 10

高端局。你猜你的类实例化的时候父类在干啥?

1年前 评论
创梦流浪人 (楼主) 1年前
pardon110

parent 是 php 关键字,思考一下

file

1年前 评论
创梦流浪人 (楼主) 1年前
一念沧海一念桑田 1年前

php 手册中就能找到答案

类与对象 - 基本概念

file

保留字列表 - 预定义类 - 特殊的类

file

所以只要你把 parent.php 文件中的类名 parent 改为合法类名就可以得到预期结果了

ps: 构造方法是有天赋的,它会在对象创建时自动执行以方便在使用对象之前做一些初始化工作,楼主例程中的使用方法有违其天赋,可以但不提倡

1年前 评论

哈哈哈哈哈哈,我的心路历程:第一眼看这个代码好像没啥问题啊!就是奇怪为什么用 parent 关键字?construct 写成了 comstruct,emmm 应该是楼主手敲的例子,实际代码没用 parent 吧。然后我去运行了一下代码,没问题啊!!然后去看评论,卧槽........ 难道你真用了 parent 关键字定义类名了啊???(ps:如果真用了,编辑器应该有提示吧)

1年前 评论
创梦流浪人 (楼主) 1年前

没有恶意哈,仅仅说一下我的感受

1年前 评论