PHP 中的构造函数
构造函数是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(); ?>
输出:
在上面的例子中
我们有一个类 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();
输出:
构造函数如何工作?
让我们看一下基类构造函数和派生类,派生类使用 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();
输出:
在下面的示例中,我们展示了 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 中有三个访问说明符
- 公开
- 受保护
- 私人
公共:声明为公共的类的成员可以在任何地方访问。
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:
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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。
