PHP构造函数传递值的问题

PHP构造函数传递值的问题,第1张

__construct($hostname)里面的参数是构造函数的参数,只能在构造函数内部调用,

public $hostname;这是类的参数,整个类内部包括继承类都可以调用

第二种的参数只能在构造函数中使用,而第一种,则将传来的参数赋值给类的变量,所以第一种的hostname整个类内部的方法都可以使用$this->hostname来调用

其实,类和函数本质上差不多。。都是将一堆实现某种功能的代码段封装在一起。。。

成员属性其实就是 变量 ,只不过这种定义在类里的 变量 ,只能给 类 或 类的对象使用。

类里边的方法和 普通函数 完全一样,只是普通函数可以直接用 函数名 调用,而定义在 类里 的函数只能被 类的对象 或 类 本身调用,不能直接用 函数名 调用,函数名 前面得带上类名或对象名。

class A{

function __contruct($num){

echo "aaa";

}

}

class B extends A{

function __contruct(){

echo "bbb";

A:: __contruct($num) //第一种调用父类构造函数的方法

parent:: __contruct($num) //第二种调用父类构造函数的方法

}

}

1、如果父类和子类中都没有显式的定义__construct,在实例化子类对象时,只会隐含的调用子类自己的构造方法。

2、如果父类中有显式的构造方法__construct,而子类中没有定义__construct,在实例化子类对象时,就会调用父类中的构造方法。

3、如果父类和子类中都显式的定义了__construct,在实例化子类对象时,只会调用子类自己的构造方法(这就像是子类重构了父类的构造方法),而如果也想要调用父类的构造方法的话,就需要在子类的__construct 方法中显式的调用,(如 __construct(){ parent::_construct();})。

扩展资料

子类的构造函数名与子类名相同。

在子类里父类的构造函数不会自动执行。

要在子类里执行父类的构造函数,必须执行类似以下语句:

$this->[父类的构造函数名()]

类的构造函数统一命名为__construct()。

子类的构造函数名也是__construct()(也是废话)。

在子类里父类的构造函数会不会执行,分两种情况:

1、如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。

2、如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。

这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:parent::__construct();

——继承

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12176146.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存