gpt4 book ai didi

PHP Codeigniter - parent::__construct

转载 作者:IT王子 更新时间:2023-10-29 00:04:29 26 4
gpt4 key购买 nike

在 PHP 中从父类继承时,尤其是在 Codeigniter 中,parent::__construct 或 parent::model() 做什么?

如果我不__construct 父类会有什么不同?并且,建议采用哪种方式?

-已添加-

重点更多地放在 Codeigniter 特定的关于以不同方式调用 parent::__construct 上,具体取决于版本,以及是否可以省略以防 Codeigniter 自动执行此操作。

最佳答案

这是一个普通的类构造函数。我们看下面的例子:

class A {
protected $some_var;

function __construct() {
$this->some_var = 'value added in class A';
}

function echo_some_var() {
echo $this->some_var;
}
}

class B extends A {
function __construct() {
$this->some_var = 'value added in class B';
}
}

$a = new A;
$a->echo_some_var(); // will print out 'value added in class A'
$b = new B;
$b->echo_some_var(); // will print out 'value added in class B'

如你所见,类 B 继承了 A 的所有值和函数。所以类成员 $some_var 可以从 A 和 B 访问。因为我们在 B 类中添加了一个构造函数,当你创建 B 类的新对象时,将不会使用 A 类的构造函数。

现在看下面的例子:

class C extends A {
// empty
}
$c = new C;
$c->echo_some_var(); // will print out 'value added in class A'

如你所见,因为我们没有声明构造函数,所以隐式使用了A类的构造函数。但是我们也可以这样做,相当于C类:

class D extends A {
function __construct() {
parent::__construct();
}
}
$d = new D;
$d->echo_some_var(); // will print out 'value added in class A'

因此,当您希望子类中的构造函数执行某些操作并执行父构造函数时,您只需使用 parent::__construct(); 行。给出的例子:

class E extends A {
private $some_other_var;

function __construct() {
// first do something important
$this->some_other_var = 'some other value';

// then execute the parent constructor anyway
parent::__construct();
}
}

更多信息可以在这里找到:http://php.net/manual/en/language.oop5.php

关于PHP Codeigniter - parent::__construct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17809517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com