Maison >développement back-end >tutoriel php >phpmaster | Manipulation HTML côté serveur à l'aide de phpQuery
PHPQuery est une API d'objet de document (DOM) côté serveur, chaintable, basé sur la bibliothèque JavaScript javascript JQuery.Ceci est la définition donnée sur la page officielle du projet PHPQuery. Si vous avez utilisé jQuery, vous aurez une idée de la façon dont cela peut simplifier de nombreuses tâches nécessitant une manipulation DOM. PHPQuery fournit exactement les mêmes fonctionnalités à utiliser dans votre code PHP côté serveur. Vous pouvez dire au revoir à la génération de code HTML désordonnée en utilisant des instructions d'écho et des méthodes similaires. Vous aurez accès à la plupart des fonctionnalités fournies par jQuery dans PHPQuery, qui peuvent être largement divisées en 4 tâches mentionnées ci-dessous:
<span><span><?php </span></span><span><span>require("phpQuery/phpQuery.php"); </span></span><span><span>$doc = phpQuery<span>::</span>newDocument("<div/>");</span></span>Le code ci-dessus créera un document HTML de base avec une balise DIV. La bibliothèque fournit diverses méthodes de création de documents; J'ai utilisé le plus simple, mais vous pouvez en trouver d'autres dans Demo.php et la documentation. Nous devons maintenant créer une liste non ordonnée et l'ajouter à notre document HTML.
<span><span><?php </span></span><span><span>... </span></span><span><span>$doc["div"]->append("<ul><li>Product Name</li><li>Price</li></ul>"); </span></span><span><span>$products = array( </span></span><span> <span>array("Product 1","<span><span></span>"</span>), </span></span><span> <span>array("Product 2","<span><span></span>"</span>), </span></span><span> <span>array("Product 3","<span><span></span>"</span>)); </span></span><span> </span><span><span>foreach($products as $key=>$product) { </span></span><span> <span>$doc["div ul"]->append("<li><span><span>$product[0]</span></li><li><span>$product[1]</span></li>"</span>); </span></span><span><span>} </span></span><span><span>print $doc;</span></span>Vous pouvez voir que nous avons la liste non ordonnée maintenant. Mais tous les éléments sont dans une seule colonne, qui est la valeur par défaut. Nous devons déplacer les éléments pair de la liste dans une deuxième colonne.
<span><span><?php </span></span><span><span>... </span></span><span><span>$doc["div ul"]->attr("style", "width:420px;"); </span></span><span><span>$doc["div ul"]->find("li:even")->attr("style","width:200px; float:left; padding:5px; list-style:none;"); </span></span><span><span>$doc["div ul"]->find("li:odd")->attr("style","width:200px; float:left; padding:5px; list-style:none;");</span></span>J'utilise l'attribut de style pour définir les styles CSS requis pour notre exemple ici, mais il n'est pas recommandé d'utiliser les styles en ligne à moins qu'il ne soit vraiment nécessaire. Utilisez toujours des cours CSS pour ajouter des styles. Maintenant, mettons en surbrillance l'en-tête et même les lignes numérotées à l'aide de méthodes PHPQuery.
<span><span><?php </span></span><span><span>... </span></span><span><span>$doc["div ul"]->find("li:nth-child(4n)")->attr("style","background:#EEE; width:200px; float:left; padding:5px; list-style:none;"); </span></span><span><span>$doc["div ul"]->find("li:nth-child(4n-1)")->attr("style","background:#EEE; width:200px; float:left; padding:5px; list-style:none;"); </span></span><span><span>$doc["div ul"]->find("li:lt(1)")->attr("style","background:#CFCFCF; width:200px; float:left; padding:5px; list-style:none;");</span></span>Nous avons terminé notre exemple simple, et vous devriez maintenant avoir une idée de la façon dont PhpQuery peut être utilisé pour simplifier le côté du serveur HTML Generation. Tout ce que nous avons fait est presque le même que celui qui serait fait avec jQuery, sauf que nous avons fait toutes les actions contre l'objet $ doc.
<span><span><?php </span></span><span><span>require("phpQuery/phpQuery.php"); </span></span><span><span>$doc = phpQuery<span>::</span>newDocument("<div/>");</span></span>Maintenant, faisons-le à l'aide de phpQuery et comparez le code et les avantages.
<span><span><?php </span></span><span><span>... </span></span><span><span>$doc["div"]->append("<ul><li>Product Name</li><li>Price</li></ul>"); </span></span><span><span>$products = array( </span></span><span> <span>array("Product 1","<span><span></span>"</span>), </span></span><span> <span>array("Product 2","<span><span></span>"</span>), </span></span><span> <span>array("Product 3","<span><span></span>"</span>)); </span></span><span> </span><span><span>foreach($products as $key=>$product) { </span></span><span> <span>$doc["div ul"]->append("<li><span><span>$product[0]</span></li><li><span>$product[1]</span></li>"</span>); </span></span><span><span>} </span></span><span><span>print $doc;</span></span>PHPQuery est facile si vous avez déjà la connaissance de travailler avec jQuery. La plupart des code ci-dessus seront explicites. Je tiens à mentionner cependant que PQ () fait référence au document actuel. Tous les autres sont des fonctions jQuery. Et même si les deux semblent similaires, le code qui utilise PHPQuery offre une meilleure qualité et extensibilité. Pensez à quel point le code d'origine peut être fragile si vous devez ajouter des fonctionnalités supplémentaires plus tard. Supposons que nous voulons ajouter une validation supplémentaire sur les marques en fonction de l'expérience de travail. Dans ce scénario, vous devez ajouter une autre méthode et attribuer le résultat renvoyé dans la boucle foreach. Cela signifie que vous devez changer de code déjà écrit, violant le principe ouvert:
Les entités logicielles (classes, modules, fonctions, etc.) doivent être ouvertes pour l'extension, mais fermées pour la modification.Avec le deuxième exemple qui utilise PHPQuery, le code est d'abord généré sans aucune validation, puis nous passons le tableau dans chaque fonction et les modifications sont placées dans la table d'origine. Chaque fonction n'affecte pas les autres fonctions, nous pouvons donc écrire une nouvelle fonction pour les nouvelles exigences et l'utiliser en dehors de la boucle avec les autres fonctions. Nous ne modifions pas le code déjà existant, ce qui sonne bien, non? C'est ce qu'on appelle la décoration:
Le motif du décorateur est un motif de conception qui permet à un comportement d'être ajouté à un objet existant dynamiquement.
PHPQuery est une API d'objet de document (DOM) côté serveur, chaintable, CSS3, basé sur la bibliothèque javascript jQuery. Il est écrit en PHP5 et fournit un moyen facile de gérer les éléments HTML du côté du serveur. Il permet aux développeurs d'effectuer des tâches telles que la traversée de documents HTML et la manipulation, la manipulation des événements et l'animation, qui ont été traditionnellement effectuées du côté client. Cela peut améliorer considérablement les performances et la sécurité des applications Web.
PHPQuery se distingue par sa simplicité et sa facilité d'utilisation, en particulier pour les développeurs déjà familiers avec jQuery. Il prend en charge la majeure partie de la syntaxe jQuery, ce qui facilite la sélection, la manipulation et la traversée des éléments HTML. Contrairement à certaines autres bibliothèques, PHPQuery est chaînable, ce qui signifie que vous pouvez relier plusieurs actions dans une seule instruction.
PHPQuery peut être installé à l'aide de Composer, un outil de gestion de la dépendance pour PHP. Vous pouvez ajouter PHPQuery à votre projet en exécutant le compositeur de commande exiger phpQuery / phpQuery. Cela téléchargera et installera la dernière version stable de PHPQuery et de ses dépendances.
PHPQuery utilise des sélecteurs CSS3 pour sélectionner des éléments, similaires à jQuery. Par exemple, pour sélectionner tous les paragraphes d'un document, vous utiliseriez $ doc ['p']. Vous pouvez également utiliser des sélecteurs plus complexes, tels que $ doc ['div.content> p'] pour sélectionner tous les paragraphes qui sont des enfants directs d'une div avec la classe «Contenu».
PhpQuery fournit plusieurs méthodes pour manipuler des éléments. Par exemple, vous pouvez utiliser les méthodes APPEND (), prend (), après () et avant () pour insérer du contenu. Vous pouvez également utiliser la méthode att () pour obtenir ou définir la valeur d'un attribut, et les méthodes addClass (), removeclass () et toggleClass () pour manipuler les classes.
phpQuery prend en charge la gestion des événements via la méthode bind (). Vous pouvez utiliser cette méthode pour attacher des gestionnaires d'événements sur des éléments. Par exemple, $ doc ['p'] -> bind ('click', function () {echo 'paragraphe cliquait!';}); Echo "paragraphe serait cliqué!" Chaque fois qu'un paragraphe est cliqué.
Oui, PHPQuery prend en charge Ajax via la méthode AJAX (). Cette méthode vous permet d'envoyer des demandes HTTP asynchrones au serveur et de manipuler la réponse à l'aide de phpQuery.
PHPQuery prend en charge les animations via la méthode Animate (). Cette méthode vous permet de créer des animations personnalisées en modifiant les propriétés CSS au fil du temps.
PhpQuery fournit plusieurs méthodes pour traverser le DOM, telles que les enfants (), parent (), next (), prev (), find (), et le plus proche (). Ces méthodes vous permettent de naviguer dans les éléments dans un document.
Oui, PHPQuery peut être utilisé aux côtés d'autres bibliothèques PHP. Il est conçu pour être flexible et interopérable, ce qui en fait un excellent outil pour la boîte à outils de tout développeur PHP.
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!