首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP:如何将子类__construct()参数传递给parent :: __ construct()?

在 PHP 中,要将子类的 __construct() 方法的参数传递给父类的 __construct() 方法,可以使用 parent::__construct() 方法。以下是一个示例:

代码语言:php
复制
class ParentClass {
    public function __construct($arg1, $arg2) {
        echo "Parent constructor called with args: $arg1, $arg2";
    }
}

class ChildClass extends ParentClass {
    public function __construct($arg1, $arg2) {
        parent::__construct($arg1, $arg2);
    }
}

$child = new ChildClass("value1", "value2");

在这个示例中,我们有一个父类 ParentClass 和一个子类 ChildClass。子类的 __construct() 方法通过 parent::__construct() 调用父类的构造函数,并传递参数 $arg1$arg2

当我们创建一个 ChildClass 对象并传递两个参数时,父类的构造函数将被调用并接收这些参数。输出将是:

代码语言:txt
复制
Parent constructor called with args: value1, value2

这就是如何在 PHP 中将子类的 __construct() 方法参数传递给父类的 __construct() 方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP面向对象精华

PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的 类方法,但各方法的参数类型和个数不同。 魔术方法:PHP把所有以__(两个下划线)开头的类方法当成魔术方法。...//继承类的构造函数      function __construct( personSex, personAge )    {          parent::__construct( "test...function __construct() {} 如果子类中定义了构造函数则不会暗中调用其父类的构造函数。...要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。 PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。...> [/php] 函数的址调用 址调用我就不多说了 下面直接给出代码 [php] function test(&$a) { a=a+100; } $b=1; echo $b;//输出1 test(b

3.4K30
  • PHP 构造函数和析构函数原理与用法分析

    Note: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。...SubClass extends BaseClass { function __construct() { parent::__construct(); print "In SubClass...为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数并且也没有从父类继承一个的话,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。...与其它方法不同,当 __construct() 被与父类 __construct() 具有不同参数的方法覆盖时,PHP 不会产生一个 E_STRICT错误信息。...要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。

    1.4K20

    PHP 面向对象知识点

    > 面向对象继承: 子类继承父类的所有成员变量和方法包括构造方法,当子类被创建时PHP会先在子类中查找构造方法,如果子类有自己的构造方法,那么PHP会率先调用子类的方法,当子类没有时,PHP则会调用父类的构造方法...($name="",$sex="none",$age=0,$school="none") { // 调用被本方法覆盖的,父类的构造方法 parent::__construct($name...} 性别: {$this->age} "; } } $person = new Person("张三",25,"男"); $person->say(); // 如下是将sex属性名传递给...> 魔术方法Call: 当程序试图调用不存在或不可见的成员方法时,PHP会先调用call方法来存储方法名称及其参数,该函数包含两个参数,即方法名和方法参数,其中方法参数是以数组形式存在的. <?...:NAME; } } class per extends persion{ const NAME="alex"; public function __construct(){ parent::

    75710

    PHP面向对象程序设计继承用法简单示例

    本文实例讲述了PHP面向对象程序设计继承用法。分享给大家供大家参考,具体如下: <?php //继承是子类(派生类)从父类(基类,超类)继承属性和方法。 //子类也可以有自己的属性和方法。...//如果$name是protected访问权限,可以自身类里访问,也可以在子类里访问。 //__construct()是类的构造函数,在创建对象实例时,自动访问该函数,子类也有自己的构造函数。...//子类没有构造函数时,在创建对象时,会调用父类的构造函数。 //子类有构造函数时,不用在调用父类的构造函数,除非有parent显式调用时,才去调用父类的构造函数。...: __construct e2 : 1 : parent : __construct e2 , 2 : self : __construct e3 : 1 : parent : __construct...self unset e2 parent unset e3 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP

    39931

    PHP面向对象程序设计(OOP)之方法重写(override)操作示例

    分享给大家供大家参考,具体如下: 因为PHP是弱类型的语言, 所以在方法的参数中本身就可以接收不同类型的数据,又因为PHP的方法可以接收不定个数的参数,所以通过传递不同个数的参数调用不相同方法名的不同方法也是不成立的...php class Person { //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为属性姓名$...function __construct($name,$sex,$age,$school) { parent::__construct($name,$sex,$age); $this- school...extends Person { var $school; //学生所在学校的属性 function __construct($name,$sex,$age,$school) { parent::__...如果子类非常精炼或者父类非 常专业化的时候尤其是这样。 不要用代码中父类文字上的名字,应该用特殊的名字 parent,它指的就是子类在 extends 声明中所指的父类的名字。

    37431

    php中的public、protected、private三种访问控制模式及self和parent的区别(转)

    php的public、protected、private三种访问控制模式的区别 public: 公有类型 在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法...在实例中可以能过$obj->var 来调用 public类型的方法或属性 protected: 受保护类型 在子类中可以通过self::var调用protected方法或属性,parent::method...self 和 parent 的区别 在子类中常用到这两个对象。...php /** * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性 * self  可以调用父类中除私有类型的方法和属性外的所有数据 */ class User{...//print __CLASS__." "; parent::__construct(); } public function show(){

    81460

    PHP 面向对象篇:抽象类与接口(上)

    0、引言 上篇教程学院君给大家介绍了父子类之间的继承与方法重写,并且提到类作为参数类型声明时,子类实例可以转化为父类,但父类实例不能转化为子类,这是因为,子类必然包含了父类方法,反之则不一定。...() { $this->brand = '领克01'; parent::__construct($this->brand); } public...PHP_EOL; } } class LynkCo03 extends Car { public function __construct() { $this-...>brand = '领克03'; parent::__construct($this->brand); } public function drive() {...PHP_EOL; $testCar->testDrive($lynkco03); 可以看到,我们这一次在测试方法 testDrive 中设置的参数类型约束是抽象类 Car,然后在方法体中,仍然可以很方便的通过代码智能提示调用

    61020

    PHP基础之面向对象篇

    如果希望地址,那就加上&符。 如果给一个函数传递的是一个数组,则默认情况下是值。 举个例子: <?...只需要在子类的代码中加入:父类名::构造函数名或者parent::构造函数名两种方法都可以。...public function __construct() { Student::__construct(); echo "我是子类的构造函数"."...函数重载 “重载”是类的多态的一种实现,是指的是一个标识符被用作多个函数名,并且能够通过参数个数或者参数类型将这些同名的函数区分开,调用不发生混淆。...如果子类中想要完善父类的方法,只需要在子类中方法的命名和父类相同,参数完全相同就可以。我们把它叫做方法的重写(覆盖)。如果子类想要调用父类的方法,可以使用parent::方法名()就可以。

    65830

    php面试中关于面向对象的相关问题

    它的声明形式为 void __construct ([ mixed args [, … ]] ) 在C++语言中,子类的构造函数会隐式地调用父类的无参数的构造函数。...但是在PHP中,子类的构造函数不会隐式地去调用父类的构造函数,需要开发者通过parent::__construct()来显式地去调用父类的构造函数。...class SubClass extends BaseClass { function __construct() { parent::__construct(); print...与构造函数类似,如果想在子类中调用父类的析构函数,那么需要显式地调用:parent::__destruct()。如果子类没有定义析构函数,那么它会继承父类的析构函数。...在子类中,可以通过self::var或self::method访问,也可以通过parent::method来调用父类中的方法。

    1.8K20

    PHP面向对象程序设计之构造方法和析构方法详解

    在类中声明构造方法的格式如下: function __construct( [参数列表] ){ //构造方法名称是以两个下划线开始的 //方法体,通常用来对成员属性进行初始化赋值 } 在PHP中,同一个类中只能声明一个构造方法...调用父类构造函数、调用无关类的构造函数: function __construct(){ parent::__construct(); // 调用父类的构造函数必须显示的使用parent调用父类构造函数...classname::__construct(); // 调用其他类的构造函数,classname是类名 //其他操作 } 继承和构造函数 PHP中的子类的构造函数不会主动调用父类的构造函数,...要显示的使用parent::__construct()调用: <?...$name; private $leg; private $wing; function __construct($name){ parent::__construct($name

    78730

    PHP抽象类基本用法示例

    php //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 //只要有一个抽象方法,那么此类必须定义为抽象类。...($nameStr){ parent::__construct($nameStr); } /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,...php //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 //只要有一个抽象方法,那么此类必须定义为抽象类。...($nameStr){ parent::__construct($nameStr); } public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误...》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

    35821

    JS原生方法原理探究(六)从 Babel 转译过程浅谈 ES6 实现继承的原理

    首先,它可以接受三个参数: 第一个参数: 类(这里是 Parent 类) 第二个参数:存放对象的数组,每个对象都是关于类的原型方法的特性描述对象(这里是 getB 和 getC) 第三个参数:存放对象的数组...,每个对象都是关于类的静态方法的特性描述对象(这里是 getD 和 getE) 接着,它会依次检查是否有第二个和第三个参数,如果有,就调用 _defineProperties 函数,分别为类的原型定义原型方法...这个方法接受一个父类和子类作为参数,首先会检查父类是不是函数或者 null,如果不是,则抛出错误(为什么父类可以是 null?...这里我们会看到还传入了第二个参数,这个参数子类原型的属性的特性描述对象(descriptor),我们对 constructor 属性进行了设置,将它设置为可写、可配置,同时利用 value 修复了因重写子类原型而丢失的...'Super1' // Super2 可以看到,即便没有通过 new 去调用 Super1,new.target 也仍然指向 Super1;而在了第三个参数之后,new.target 也没有丢失,只是指向了

    1.1K20

    JS原生方法原理探究(六)从 Babel 转译过程浅谈 ES6 实现继承的原理

    首先,它可以接受三个参数: 第一个参数: 类(这里是 Parent 类) 第二个参数:存放对象的数组,每个对象都是关于类的原型方法的特性描述对象(这里是 getB 和 getC) 第三个参数:存放对象的数组...,每个对象都是关于类的静态方法的特性描述对象(这里是 getD 和 getE) 接着,它会依次检查是否有第二个和第三个参数,如果有,就调用 _defineProperties 函数,分别为类的原型定义原型方法...这个方法接受一个父类和子类作为参数,首先会检查父类是不是函数或者 null,如果不是,则抛出错误(为什么父类可以是 null?...这里我们会看到还传入了第二个参数,这个参数子类原型的属性的特性描述对象(descriptor),我们对 constructor 属性进行了设置,将它设置为可写、可配置,同时利用 value 修复了因重写子类原型而丢失的...'Super1' // Super2 可以看到,即便没有通过 new 去调用 Super1,new.target 也仍然指向 Super1;而在了第三个参数之后,new.target 也没有丢失,只是指向了

    1.1K10
    领券