首頁 php教程 php手册 面向对象的PHP

面向对象的PHP

Jun 13, 2016 am 10:53 AM
php 功能 物件 引入 時間 語言 面向

许多语言本身就是面向对象的,而PHP用了几年的时间才引入这类功能。很多人认为,以前试图向该语言添加面向对象的功能都是失败的。尽管版本4提供了非常基本的面向对象程序设计(OOP)概念,但是还存在一些不足,包括:

·        非正式的对象引用方法

·        无法设置字段和方法的作用域(公共、私有、保护、抽象)。

·        没有命名构造函数和标准约定

·        缺少对象的析构函数。

·        缺少对象复制特性。

·        缺少对接口的支持。

幸好PHP5消除了上述所有缺点,对最初的实现进行了本质的改进,还增加了很多新的OOP特性。

OOP的好处

   面向对象程序设计的诞生是开发范型一次的重大改变,编程的注意力重新从应用程序的逻辑回到其数据上来,换句话说,OOP将焦点从编程的过程性事件转向最终建模的真实体。这使得应用程序更接近于我们周围的现实世界。

封装

   程序员一般都有很强的好奇心,我们喜欢把东西拆开,了解里面的所有小零件如何在一起工作。虽然能得到精神上的满足,但深入地了解事物的内部工作原理并是不必要的,例如,成百万人每天都在使用计算机,但是很少有人真正了解它的工作原理,同样汽车,电视及许多司空见惯的东西都是如此,通过使用接口就能忽略其内部结构。例如,你知道旋转收音机的旋转钮就可以换台,但你可能不知道实际上这是在告诉收音机要监听使用特定的频率传输的信号,这是通过解调器完成的,即便不理解这个过程,也不影响使用收音机,因为接口隐藏了这些细节,通过众所周知的接口将用户与实际应用程序的内部工作原理分开,这种方法称为封装。

    面向对象程序设计通过建立定义良好(well-defined)的接口(每个应用程序的组件都可以访问这个接口),使隐藏应用程序内部工作原理的概念得到进一步提升。具有OOP思维的开发人员不会陷入大量的细节之中,而会设计出独立于其他组件紧密地结合或耦合(couple)定义良好的接口进行交互的组件称为对象(object)。对象是通过一个称为类(class)的模板创建的,类用于定义某个实体所应具有的数据和行为,这种方式有以下优点:

·        开发人员可以修改应用程序的实现,而不会影响到对象用户,因为用户只通过对象的接口与对象交互。

·        会减少可能出现的用户错误,因为对用户与应用程序的交互有所控制。

继承   www.2cto.com

   在我们周围的环境中,许多事物(包括人)都可以使用一组良好定义的规则来建模。我们来看员工这一概念,所有员工都有一组共同的性质,例如:姓名、员工号、工资。但是,有许多不责骂类型的员工,如职员,主管、出纳和首席执行官等。每一类员工都拥有一般员工定义中所定义的性质的超集。用面向对象的术语来说,这些员工类型继承(inherit)了一般员工定义,包括此定义中的所有性质和行为,接下来,每个特定的员工类还可以被另一个更明确的类所继承,例如:“职员”类型可以被白班职员和夜班职员继承,白班职员和夜班职员都会继承员工定义和职员定义中的所有性质。基于这个概念,可以再创建一个“人”类,使“员工”类成为“人”类的一个子类,其结果是,员工类及其所有派生类(职员、出纳、CEO等)都会立即继承“人”类中定义的所有性质和行为。

    面向对象开发方法建立在继承概念的基础之上,这种策略提高了代码的可重用性,因为它使得人们能够在多个应用程序中使用设计良好的类[所谓设计良好(well-designed),是指这些类足够抽象,从而可以重用]。

多态

   多态(polymorphism)是来自希腊语的一个术语,原意是“有多种形态”。简单地讲,多态是指OOP能够根据使用类的上下文来重新定义或改变类的性质或行为。

    还是用例子来解释,假设在员工类的定义中有一个“签到”和行为,对于职员员工而言,这个行为可能具体为使用时钟来打卡,对于其类型的员工而言,例如“程序员”签到可能过网络进行,虽然两个类都从员工类继承到这个行为,但具体的实现要依赖于实现“签到”的上下文,这种就是多态的强大这处

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles