Maison développement back-end tutoriel php 使用OOP技术来优化PHP应用程序

使用OOP技术来优化PHP应用程序

Jun 01, 2016 pm 02:28 PM

大多数开发者认为面相对象的程序设计(OOP)思想和php是一对矛盾,但实际上,PHP封装了开发者在其应用程序中使用OOP技术的所有功能。为了证明这一点,让我们举一个经典的Vehicle(车辆)例子,其PHP类如下:
class Vehicle {
  // Stuff goes here!
}

在我们新建的Vehicle类中,用方法(即PHP函数)来联系我们的应用程序和Vehicle类的特性(characteristics)。每一个方法都是用来向应用程序描述Vehicle,这样我们用方法来实现某些功能。请考虑下面的例子(它显然是非函数的,即没有给出函数体):
class Vehicle {
  function getWheels() {
    // 逻辑上用来查询这里的车轮(即wheel)数
    return($wheels);
}
  function getDoors() {
    // 逻辑上用来查询这里的车门(即door)数。
return($wheels);
}
}


这里,我们看到了两个“getter”函数。如果这看起来、听起来很熟悉的话,那是因为PHP的OOP与C或者java非常相似的缘故。真正的挑战是灵活的使用OOP、充分而又有效的使用封装。

为了确定在把Vehicle集成到你的应用程序这一过程中你需要懂得哪些内容,定义组成Vehicle的基本元素或许会有所帮助。例如,Vehicles可以按照车门的数目或者车轮的数目来组织。

如果我们想知道我们的Vehicle有多少个轮子,我们需要返回这一信息的函数。在PHP中,这一函数的实现可以如代码清单A所示。

现在我们的Vehicle类包含了一个叫着getWheels的方法了,当应用程序传递给它一个车辆类型时,它返回轮子的数目。那么,我们如何把车辆类型这一信息传递给Vehicle类呢?为了更好的理解这一问题,让我们演示一下用法,实现我们的类并调用它的getWheels方法来得到car类型车辆的车轮数目。
// 设置车辆种类
$vehicle = "car";

这样我们已经宣布了我们想创建的车辆类型为car。由于我们使用PHP,因此这个值可以是动态的,但如果这样的话很快就会难以用代码来处理(hard-code)它了。

为了使用这个类,我们首先需要在应用程序中创建该类的一个实例:
// 创建car类的一个新实例
$myVehicle = &new Vehicle;


我们刚刚创建了一个叫着myVehicle的Vehicle类的实例。它是Vehicle类的唯一实例,而且它包含了Vehicle所包含的所有数据(方法和属性)。

现在是找出我们的car到底有多少个轮子的时候了:
// 通过向getWheels方法传递车辆类型来获取车轮数目
$numWheels = $myVehicle->getWheels($vehicle);

正如你所见,我们调用了getWheel方法并向它传递了车辆种类。如果一切顺利的话,我们就得到了我们所需的数据:
// 打印车轮数目
PRint "$vehicle has $numWheels wheels.";


如果我们想得到车门数目,我们需要编写另一个检查车门数的方法,如代码清单B所示。

易于编程、易于管理

正如你在这个简单的演示中所看到的那样,在PHP中实现面相对象的编程并不困难。像我们在Vehicle类中那样采用OOP和类,创建一个购物车(shopping cart)并不会非常麻烦。由于采用了面向对象的编程思想,代码易读、易维护、易升级。

清单C给出了我们在这里所讨论汽车分类应用程序的更高版本的代码。它充分演示了PHP的面相对象性能。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Expliquez le concept de liaison statique tardive en PHP. Expliquez le concept de liaison statique tardive en PHP. Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

PHP Logging: meilleures pratiques pour l'analyse du journal PHP PHP Logging: meilleures pratiques pour l'analyse du journal PHP Mar 10, 2025 pm 02:32 PM

La journalisation PHP est essentielle pour surveiller et déboguer les applications Web, ainsi que pour capturer des événements critiques, des erreurs et un comportement d'exécution. Il fournit des informations précieuses sur les performances du système, aide à identifier les problèmes et prend en charge le dépannage plus rapide

Comment s'inscrire et utiliser les fournisseurs de services Laravel Comment s'inscrire et utiliser les fournisseurs de services Laravel Mar 07, 2025 am 01:18 AM

Les fournisseurs de services et les fournisseurs de services de Laravel sont fondamentaux pour son architecture. Cet article explore les conteneurs de services, détaille la création du fournisseur de services, l'enregistrement et démontre l'utilisation pratique avec des exemples. Nous commencerons par un ove

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

See all articles