首页  >  文章  >  后端开发  >  PHP 中的构造函数

PHP 中的构造函数

王林
王林原创
2024-08-29 12:42:06994浏览

构造函数是PHP5 OOP(面向对象编程)的概念。构造函数与我们在程序中声明的类相关联。构造函数是在类的对象实例化时自动调用的,因此构造函数的定义是这样的:“构造函数是一种特殊的方法,在类的对象实例化时自动调用。”在本主题中,我们将学习 PHP 中的构造函数。

广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

语法

<?php
Class Classname {
//constructor
function __construct() {
//statements
}
}
?>

在上面的代码中,构造函数以 __ 双下划线开头,后跟关键字 constructor。没有 __construct() 的构造函数或者如果类的名称发生更改,则定义的方法只是一个方法而不是构造函数。因此,根据定义的语法在类中定义构造函数非常重要。

构造函数的类型

以下是一些类型的构造函数,其输出如下

1) 预定义构造函数

为了澄清预定义构造函数,让我们看一下下面给出的示例

预定义构造函数示例

代码:

<?php
class Person {
function  CanSpeak() {
echo " Not a constructor method " . '<br>';
}
function __construct() {
echo " In the constructor method " . '<br>';
}
}
//Object of class calling the constructor internally
$p = new Person();
// Object of class calling the normal method
$p->CanSpeak();
?>

输出:

PHP 中的构造函数

在上面的例子中

我们有一个类 Person,它有两个方法,其中一个 Person CanSpeak() 方法和构造函数方法 __construct()。接下来,我们将该类实例化为对象 $p。使用 $p 我们调用了普通方法。一旦创建了对象,就会调用构造函数方法并执行方法内的语句,类似地,使用相同的对象 $p 和内部语句调用 CanSpeak() 方法,该方法是普通方法而不是构造函数方法该方法被执行。另外,由于上面定义的构造函数没有任何参数,我们将其称为零参数构造函数或预定义构造函数。

2) 参数化构造函数

构造函数可以带有或不带有参数。带参数的构造函数称为参数化构造函数,不带参数的构造函数称为零参数构造函数。让我们看一个例子。

参数化构造函数示例

代码:

class Person {
private $first;
private $email;
private $mobile;
public function __construct($name, $email, $mobile) {
echo "Initialising the object...<br/>";
$this->name = $name;
$this->email = $email;
$this->mobile = $mobile;
}
public function showProfile() {
echo "My name is: " . $this->name. " " . $this->email. " " . $this->mobile;
}
}
$john = new Person("John","[email protected]", "9187986786");
$john->showProfile();

输出:

PHP 中的构造函数

构造函数如何工作?

让我们看一下基类构造函数和派生类,派生类使用 extends 关键字扩展基类,派生类有自己的构造函数要执行,并且还要执行父构造函数。到目前为止,我们只了解了类中声明的构造函数。这里让我们为构造函数补充一些知识。在下面的例子中,基类Person有一个构造函数,现在这个构造函数被派生类或子类使用parent关键字调用,从而可以访问基类Person的构造函数。

输出流程

首先,调用 Person 构造函数,然后调用 Customer 构造函数,该构造函数在内部再次调用 Person 构造函数,然后调用其自己的客户构造函数,最后调用扩展 Person 类的 Employee 类,从而再次调用 Person 构造函数。

代码:

class Person {
function __construct() {
echo "In Person constructor"."<br>";
}
}
class Customer extends Person  {
function __construct() {
parent::__construct();
echo "In Customer constructor"."<br>";
}
}
class Employee extends Person  {
// inherits Person’s constructor
}
// In Person constructor
$p = new Person();
// In Person constructor
// In Customer constructor
$c = new Customer();
// In Employee constructor
$e = new Employee();

输出:

PHP 中的构造函数

在下面的示例中,我们展示了 set 方法和 get 方法的工作原理。使用 OOP 中的封装概念。最初,程序是用构造函数、set_name 方法和 get_name 方法声明的。请注意,构造函数是一个参数化构造函数,在实例化类时肯定会调用它,因此第一个输出是 John Doe 接下来创建了该类的对象,并调用了 set_name 和 get_name 方法,将输出打印为 Alice。

代码:

<?php
class Person {
public $name;
function __construct($name) {
echo $this->name = $name;
}
function set_name($name) {
$this->name = $name;
}
function get_name() {
echo $this->name;
}
}
// In Person constructor
$p = new Person('John Doe');
echo "\n";
$p->set_name('Alice');
$p->get_name();
?>

输出:

PHP 中的构造函数

访问说明符

PHP 中有三个访问说明符

  • 公开
  • 受保护
  • 私人

公共:声明为公共的类的成员可以在任何地方访问。

Protected: Members of the class declared as protected are accessible only within the base class and the derived class which extends the base class.

Private: Members of the class declared as private are accessible with the class that defines it.

Also, the variables declared are called data members or properties and the functions declared are called as data methods. In the below example we have Base Class declared as Person which has the following properties along with the access specifiers public name, protected email and private mobile. Now the class is instantiated with an object $p and these three properties which are accessed from the object. which outputs are an error, why because, the protected property says that protected are accessible only within the base class and the derived class which extends the base class?

Code:

<?php
class Person {
public $name=;
protected $email;
private $mobile;
function __construct() {
print "In Person constructor";
}
}
// In Person constructor
$p = new Person();
echo $p->name;
echo $p->email;
echo $p->mobile;
?>

Output:

PHP 中的构造函数

Conclusion

Hope this article finds you what you have been searching for. The article has different examples for you to learn. The more you put the examples in practice the easier it will become to grasp.

以上是PHP 中的构造函数的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:Foreach Loop in PHP下一篇:Destructor in PHP