Php 类构造函数做什么?
我目瞪口呆。我一直在寻找一个关于类构造函数(特别是在PHP中)到底做什么的好定义 据我所知,它是类在调用时执行的初始函数,对吗 不管我们是否专门调用函数本身,它都会被调用Php 类构造函数做什么?,php,constructor,Php,Constructor,我目瞪口呆。我一直在寻找一个关于类构造函数(特别是在PHP中)到底做什么的好定义 据我所知,它是类在调用时执行的初始函数,对吗 不管我们是否专门调用函数本身,它都会被调用 有人能在这里说明一下吗?或者至少给我指出正确的方向 当您创建类的新实例时会调用它,该实例会自动调用,您可以在那里启动任何局部变量。要完成释放/销毁对象之前必须完成的工作,可以使用析构函数。构造函数和析构函数不是特定于PHP的,但对于OO编程语言来说是通用的。 请参见每当创建类的新实例(即对象)时,都会调用构造函数。这允许您设置
有人能在这里说明一下吗?或者至少给我指出正确的方向 当您创建类的新实例时会调用它,该实例会自动调用,您可以在那里启动任何局部变量。要完成释放/销毁对象之前必须完成的工作,可以使用析构函数。构造函数和析构函数不是特定于PHP的,但对于OO编程语言来说是通用的。
请参见每当创建类的新实例(即对象)时,都会调用构造函数。这允许您设置对象的状态,以及传入对象可能需要正常工作的任何依赖项,例如CacheManager、数据库连接或 如果您有一个继承链,即C类扩展了B类,B类扩展了A类,那么请记住,如果您在链的下一个位置重写构造函数,请显式调用父构造函数:
<?php
class C extends B
{
public function __construct ($constructorParams)
{
parent::__construct($constructorParams);
}
}
据我所知,它是类在调用时执行的初始函数,对吗
它是第一次创建类的新实例时调用的方法。它是一个实例方法,因为它只对实例有效。(对象是实例;类是
对象所属的对象。方法可能属于类,而不是实例。PHP调用这些静态方法,但其他语言并不总是使用这种术语。)
在某些语言中,构造函数实际上返回新对象。PHP中的情况并非如此,在PHP中,构造函数是为了初始化而存在的
不管我们是否专门调用函数本身,它都会被调用
对。当您使用new
操作符时,会调用它
class Foo {
public function __construct() { echo "I foo'd.\n" ;}
}
$f = new Foo(); // Echos "I foo'd.\n"
你可能想 您或多或少是正确的-这是一个在实例化类(使用new
关键字创建)时调用的函数
除非扩展类并重写构造函数,否则不必专门调用它,因为子类\uuu construct()
不会调用它的父构造函数,除非使用父类::\uu construct()
显式定义
例如
没有。
不
对
构造函数仅在创建对象时调用。当您以后只在某处使用对象时,不会调用它
创建新对象时,构造函数是一个被调用的方法,它初始化对象的变量/字段
构造函数必须与其中的类具有相同的名称。是。来自维基百科-
在PHP(版本5及更高版本)中,构造函数是一个名为_construct()的方法,关键字new在创建对象后自动调用该方法。它通常用于自动执行各种初始化,例如属性初始化。构造函数也可以接受参数,在这种情况下,编写新语句时,还需要向构造函数发送括号之间的函数参数。
PHP允许开发人员为类声明构造函数方法。具有构造函数方法的类对每个新创建的对象调用此方法,因此它适用于对象在使用之前可能需要的任何初始化
构造函数通过初始化所有实例变量并在内存中创建一个存放该对象的位置来创建它所在类的对象
例如,您可能想要初始化
基于10或20的整数变量
在一定条件下,当你的
类被创建。在这种情况下,你
在执行过程中无法硬编码该值
变量声明。这样
代码可以放在
构造函数,以便初始化
上课的时候会发生什么
实例化
当第一次调用PHP类时,该类将自动运行类构造函数函数,这有助于自动配置该类。如果您需要在使用类方法之前预设一些实例变量、会话或cookie,这将非常有用
关于
#包括
使用名称空间std;
阶级形态{
受保护的:
int w,h,a;
公众:
形状(int,int);
};
形状::形状(整数x,整数y){
w=x;
h=y;
};
类三角形:公共形状{
公众:
无效显示区域();
};
空心三角形::显示面积(){
a=(w+h)*1/2;
实际上,在PHP中,最佳实践是使用_构造,而不是类的名称。当没有构造函数时,什么会实例化一个类?
class A {
public $value;
function __construct() {
$this->value = "A";
}
}
$a = new A();
echo $a->value; // "A";
class B extends A {
}
$b = new B();
echo $b->value; // "A";
class C extends A {
function __construct() {
$this->value = "C";
}
}
$c = new C();
echo $c->value; // "C";
class D extends A {
function __construct() {
$this->value = "D";
parent::__construct();
}
}
$d = new D();
echo $d->value; // "D";
#include<iostream>
using namespace std;
class shape{
protected:
int w, h, a;
public:
shape(int, int);
};
shape :: shape(int x, int y){
w = x;
h = y;
};
class triangle : public shape{
public:
void disp_area();
};
void triangle :: disp_area(){
a = (w + h) * 1 / 2;
cout<<endl<<" Area Of Triangle : "<<a;
};
class rectangle : public shape{
public:
void disp_area();
};
void rectangle :: disp_area(){
a = w * h;
cout<<endl<<" Area Of Rectangle : "<<a;
};
int main(){
triangle obj1;
rectangle obj2;
obj1.shape(2, 3);
obj2.shape(4, 5);
obj1.disp_area();
obj2.disp_area();
return 0;
};