Maison développement back-end tutoriel php Conseils sur l'utilisation de l'interface PHP

Conseils sur l'utilisation de l'interface PHP

Aug 17, 2017 am 09:02 AM
php Conseils d'utilisation interface


Résumé : Dans le processus de programmation, nous devons apprendre à utiliser les interfaces pour changer nos vies et améliorer considérablement nos capacités personnelles. Les interfaces ne sont pas une fonctionnalité nouvelle, mais elles sont très importantes. Donnons un petit exemple d'interfaces. ...

Imaginez une classe DocumentStore, chargée de collecter le texte de différentes ressources. Vous pouvez lire du HTML à partir d'URL distantes, lire des ressources et collecter le résultat des commandes du terminal.

Définir la classe DocumentStore

class DocumentStore{    protected $data = [];    
    public function addDocument(Documenttable $document){
        $key = $document->getId();
        $value = $document->getContent();        $this->data[key] = $value;        
    }    
    public function getDocuments(){        return $this->data;
    }
    
}

Puisque les paramètres de la méthode addDocument() ne peuvent être que des instances de la classe Documenttable, comment pouvons-nous définir la classe DocumentStore comme ça ? En fait, Documenttable n'est pas une classe, c'est une interface

définit Documenttable

interface Documenttable{   
     public function getId(); 
        public function getContent(); 
   
}

Cette interface définit le nom de la table. implémente l'interface Documenttable doit fournir une méthode publique getId() et une méthode publique getContent().

可是这么做有什么用呢?这么做的好处就是,我们可以分开定义获取稳定的类,而且能使用十分不同的方法。下面是一种实现方式,这种方式使用curl从远程url获取html。

定义HtmlDocument类

class HtmlDocument implements Documenttable{    protected $url;    public function __construct($url)
    {        $this->url = $url;
    }    public function getId(){        return $this->url;
    }    public function getContent(){
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$this->url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch,CURLOPT_MAXREDIRS,3);
        curl_close($ch);        return $thml;
    }
}

下面一个方法是获取流资源。

class StreamDocument implements Documenttable{    protected $resource;    protected $buffer;    public function __construct($resource,$buffer = 4096)
    {        $this->resource=$resource;        $this->buffer=$buffer;
    }    public function getId(){        return 'resource-' .(int)$this->resource;
    }    public function getContent(){
        $streamContent = '';
        rewind($this->resource);        while (feof($this->resource) === false){
            $streamContent .= fread($this->resource,$this->buffer);
        }        return $streamContent;
    }
}

下面一个类是获取终端命令行的执行结果。

class CommandOutDocument implements Documenttable{    protected $command;    public function __construct($command)
    {        $this->command=$command;
    }    
    public function getId(){        return $this->command;
    }    public function getContent(){        return shell_exec($this->command);
    }

}

下面我们来演示一下借助上面的三个类来实现DocumentStore类。

$documentStore = new DocumentStore();//添加html文档$htmlDoc = new HtmlDocument('https:// www.i360.me');

$documentStore->addDocument($htmlDoc);//添加流文档$streamDOC = new StreamDocument(fopen('stream.txt','rb'));

$documentStore->addDocument($streamDOC);//添加终端命令文档$cmdDoc = new CommandOutDocument('cat /etc/hosts');

$documentStore->addDocument($command);

print_r($documentStore->getDocuments());die;

这里HtmlDocument,StreamDocument,CommandOutDocument这三个类没有任何共同点,只是实现了同一个接口。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Comment obtenir la date et l'heure actuelles en PHP? Comment obtenir la date et l'heure actuelles en PHP? Aug 31, 2025 am 01:36 AM

Usedate ('y-m-dh: i: s') withdate_default_timezone_set () togetcurrentDateAndtimeInphp, assurant à la réalisation des éventualités de latTheDesiredTimeZonElike'America / new_york'beforCallingDate ().

Comment définir un niveau de rapport d'erreur en PHP? Comment définir un niveau de rapport d'erreur en PHP? Aug 31, 2025 am 06:48 AM

UseError_Reportting () TOSETERRORLEVELSINPHP, telase_allfordEvelovegor0ForProduction, etControldisplayorLoggingViaini_Set () ToenhancedEbuggingandSecurity.

Comment travailler avec des horodatages en PHP? Comment travailler avec des horodatages en PHP? Aug 31, 2025 am 08:55 AM

Utilisez l'heure () pour obtenir l'horodatage actuel, Date () Formats l'heure, et StrtoTime () convertit la chaîne de date en horodatage. Il est recommandé que la classe DateTime gère les opérations de fuseau horaire et de date pour des opérations complexes.

Comment obtenir le nom de classe d'un objet en PHP? Comment obtenir le nom de classe d'un objet en PHP? Sep 01, 2025 am 04:48 AM

Useget_class ($ objet) togetTheClassNameAtRuntime; 2.UsemycLass :: classforcompile-timeclassnameStringings, en particulier avec des espaces; 3.InsideAclassMethod, get_class ($ this) returnshecurrentObject'sclassName.

Entrez la touche ne fonctionnant pas sur mon clavier Entrez la touche ne fonctionnant pas sur mon clavier Aug 30, 2025 am 08:36 AM

Tout d'abord, CheckForPhysicsUesuesLikeeDebrisordAmageAndCleantheyBoardOrtestwithanExternalone; 2.TestertheenterkeyIndifferentAppstodetermineiftheissueIssoftware-spécifique; 3.restartyourcomputertoresolvetetemporaryglitches; 4.DisableStickykeys, Filterkeys, Ortogglek

Quelle est la différence entre == et === dans PHP? Quelle est la différence entre == et === dans PHP? Sep 01, 2025 am 07:50 AM

=== Les valeurs et les types sont nécessaires pour être les mêmes, == SEUX SEMANTS SIMITE SI les valeurs sont égales. Par exemple, 5 == "5" est vrai, mais 5 === "5" est faux, selon le type. === Pas de conversion de type, plus sécurisée et stricte.

Comment crypter et déchiffrer les données en PHP? Comment crypter et déchiffrer les données en PHP? Sep 01, 2025 am 04:11 AM

UseOpenSSL_encrypt () andopenSSL_Decrypt () WithAes-256-CBCForsECurephPencryption.GeneratEarandomivperencryption, DeriveKeyViasha-256, andstoreivWithCipherTextUsingBase64Encoding.Afordecryption, extractiveRegereateKeyToreCoverPlaintex

233 La version Web Paradise est disponible pour le plaisir sans téléchargement. 233 Adresse Web de paradis 233 La version Web Paradise est disponible pour le plaisir sans téléchargement. 233 Adresse Web de paradis Sep 02, 2025 pm 02:03 PM

L'entrée de la version Web 233 Paradise pour ouvrir et jouer est https://www.233leyuan.com. Cette plate-forme ne nécessite pas de téléchargement et prend en charge le jeu en ligne direct, offrant des types de jeux riches, une expérience de fonctionnement en douceur et des fonctions d'interaction communautaire complètes.

See all articles