Les 10 fonctionnalités PHP les plus utilisées

À Ecce Media , nous utilisons PHP dans le cadre de notre rituel de codage quotidien. Nous aimons tous utiliser de nombreux frameworks et extraits de code open source pour nous faciliter la vie. Cependant, nous pensons également qu'il est important que chaque développeur ait une compréhension complète des fonctions, classes et méthodes PHP de base. Sans connaissance de ces derniers, comment pouvez-vous commencer à comprendre comment tous les cadres fonctionnent?

Nous avons compilé une sélection de nos 10 principales fonctions, classes et fonctionnalités natives que nous utilisons quotidiennement. Nous savons de première main à quel point ces fonctionnalités sont inestimables, nous espérons donc que vous les trouverez également utiles.

1. Classe AOP

Nous utilisons le PDO (PHP Data Object) exclusivement pour nous connecter à nos bases de données MySQL. PDO fournit une belle couche d'abstraction autour d'un ensemble de pilotes de base de données tels que MySQL, PostgreSQL et MS SQL. Cela signifie que quelle que soit la base de données que vous utilisez, tant que PDO la prend en charge, vous pouvez utiliser les mêmes fonctions pour effectuer les mêmes actions sur la base de données. Cela rend votre code plus portable pour votre application Web afin d'être utilisé sur toute une gamme de bases de données sans temps de développement supplémentaire.



La classe PDO fournit de nombreuses fonctions standardisées telles que la création de transactions, la création d'instructions préparées et vous permettant d'échapper à vos variables si vous en avez besoin. Utilisé correctement, PDO peut aider à protéger votre application Web des attaques par injection SQL.

La classe PDO peut être utilisée directement, mais nous aimons utiliser notre propre couche par-dessus pour nous donner plus de contrôle sur des choses comme le formatage et la validation des entrées de données, que la classe PDO ne fournit pas. RedBeanPHP ORM est une bonne solution open source qui fournit des fonctionnalités intéressantes basées sur PDO.

L'exemple ci-dessous montre une connexion à une base de données MySQL qui sélectionne le nom, la couleur et les calories de chaque ligne dans la table des fruits. En utilisant une instruction préparée, PDO convertit les espaces réservés pour correspondre au tableau analysé dans la fonction d'exécution. En utilisant l'instruction préparée, toutes les valeurs sont échappées pour se protéger de l'injection SQL. L'ensemble du code a été ajouté à un bloc try, qui peut être utilisé pour intercepter toutes les exceptions.

150, ':colour' => 'red')); /* Get the returned Data */ $dataSet = $sth->fetchAll(); /* Print Results */ print_r($dataSet);}catch (PDOException $e){ echo 'PDO Error: '.$e->getMessage();}catch(Exception $e){ echo 'A Unknown Error Occurred: '.$e->getMessage();}

2. json_encode et json_decode

Avec le déploiement de PHP5.2, deux fonctions très utiles vous permettent d'analyser les chaînes JSON (JavaScript Object Notation). JSON est un standard basé sur du texte qui est généralement utilisé pour envoyer et recevoir des données avec une structure simple qui a été conçue pour être facilement lue, à la fois par un ordinateur et par un humain.

PHP fournit deux fonctions qui vous permettent de manipuler vos données à la fois vers et depuis JSON. json_encode est utilisé en définissant le premier argument comme vos données. Qu'il s'agisse d'une simple chaîne ou d'un tableau multidimensionnel, PHP essaiera de renvoyer une chaîne de vos données qui a été convertie en une chaîne au format JSON. Cette chaîne peut ensuite être utilisée pour sortir sur une API ou incluse dans votre modèle HTML pour être lue par votre code JavaScript sur le front-end.

comment ajouter des pinceaux à csp

Il y a quelques mises en garde à utiliser json_encode . Par exemple, seuls les types de données de base peuvent être utilisés. Les chaînes, les nombres et les booléens sont les types principaux avec les tableaux associatifs et non associatifs. PHP essaiera également de convertir des objets de classe mais n'encodera que les propriétés publiques. UTF8 est également utilisé pour encoder la chaîne résultante de JSON.

L'exemple ci-dessous montre un tableau d'animaux qui est converti en une chaîne JSON puis envoyé à l'utilisateur. Vous pouvez appeler ce script à partir d'une requête Ajax via un framework JavaScript qui renverra alors un objet JavaScript prêt à être itéré.

'cat','name'=>'Alfie','age'=>2), array('type'=>'dog','name'=>'Bella','age'=>6));/* Encode to JSON */$jsonString = json_encode($myArray);echo $jsonString;

json_decode est l'opposé de json_encode . La fonction prend la chaîne JSON comme premier argument et essaie d'analyser la chaîne dans une variable PHP. Il existe un deuxième argument facultatif pour convertir la chaîne en objet ou en tableau associatif. En analysant «true» comme deuxième argument (comme indiqué ci-dessous), vous pouvez renvoyer un tableau.

L'avantage d'utiliser JSON sur XML est sa simplicité; avec seulement quelques types de données, PHP facilite l'analyse de données simples. JSON n'est peut-être pas aussi rapide que l'analyse XML dans la majorité des cas, mais json_decode vous offre un accès direct à vos données sous forme de tableau ou d'objet. Ceci est différent de simpleXML, qui retourne un objet simpleXML que vous devez ensuite traiter pour accéder à vos données. par conséquent , json_decode peut être considéré comme tout aussi rapide.

3. Classe DateTime

Le Datetime class vous permet de gérer l'heure et les dates d'une manière plus orientée objet, ce qui est impossible en utilisant les fonctions de base standard telles que mktime et strtotime . En utilisant le DateInterval et DateTimeZone classes, nous sommes en mesure d'exécuter des fonctionnalités standard telles que l'ajout ou la soustraction d'intervalles de temps sur une date ou la modification du fuseau horaire actuel. Le Datetime La classe peut également être étendue afin que nous puissions fournir des fonctionnalités supplémentaires tout en rendant le code plus propre et plus facile à lire.

Une raison importante d'utiliser le Datetime classe est qu'il stocke toutes les dates sous forme d'entier 64 bits, ce qui fournit une solution de contournement pour le bogue 32 bits 2038 où les dates cesseront d'augmenter davantage.

comment devenir directeur artistique de la mode

L'exemple de code ci-dessous montre comment le Datetime La classe peut être utilisée pour ajouter un jour à l'heure actuelle du serveur, puis convertir le fuseau horaire en UTC.

format('Y-m-d H:i:s');/* Add 1 Day */$date->add(new DateInterval('P1D'));echo '
'.$date->format('Y-m-d H:i:s');/* Change Timezone to UTC */$date->setTimezone(new DateTimeZone('etc/UTC'));echo '
'.$date->format('Y-m-d H:i:s');

4. Exceptions

Avec PHP5 est venue l'implémentation d'exceptions. Comme d'autres langages de programmation tels que Java et C #, les exceptions sont utilisées pour «lancer» des erreurs qui peuvent être interceptées à tout moment en remontant dans votre pile de code. Une exception peut être créée facilement en utilisant le lancer mot-clé suivi d'un Exception objet.

La capture des exceptions est implémentée en enveloppant le code que vous souhaitez tester essayer de bloquer . Vous devrez ensuite créer un bloc de capture pour 'attraper' toute exception que le code du bloc try lève.

L'interpréteur PHP essaiera de tout analyser dans le bloc comme d'habitude. Si aucune exception n'est levée, alors l'interpréteur continuera dans le script en ignorant tout ce qui se trouve dans le bloc catch. Cependant, si une exception est levée, le reste du code dans le bloc try est ignoré et exécutera tout dans le bloc de capture .

La beauté des exceptions est qu'elles peuvent être étendues car ce ne sont que des classes. En étendant la norme Exception classe, vous pouvez donner des fonctionnalités supplémentaires à votre exception. Un autre avantage de l'extension Des exceptions est qu'il vous permet d'avoir plusieurs blocs catch qui peuvent faire référence à chaque classe d'exception en utilisant l'indication de type.

Avec PHP5.5, nous avons maintenant un troisième bloc appelé finalement . Tout code dans cette zone sera exécuté indépendamment du fait qu'une exception ait été levée ou non.

Comme dans l'exemple PDO, l'exemple ci-dessous est contenu dans un bloc try. Si le script ne parvient pas à se connecter pour une raison quelconque, nous pouvons capturer cela en introduisant un bloc catch pour capturer toutes les exceptions ou exceptions PDO. Dans le cas ci-dessous, toutes les erreurs seront imprimées à l'écran et le script sera toujours exécuté jusqu'à la fin.

getMessage();}catch(Exception $e){ echo 'A Unknown Error Occurred: '.$e->getMessage();}echo 'I am still parsed, even if there was an error';

5. Espaces de noms

A l'époque précédant les espaces de noms, PHP plaçait chaque variable, fonction et classe sous l'espace de nom global. Cela limitait les développeurs à s'assurer que leurs applications n'avaient que des noms de fonction et de classe uniques. Les développeurs ont contourné ce problème en préfixant les noms de classe et de fonction pour fournir un pseudo effet d'espaces de noms, mais le problème avec cela était que les noms de classe pouvaient finir par être énormes, ce qui rendait parfois difficile leur lecture et leur écriture sans l'utilisation d'un IDE intelligent .

Heureusement, avec l'introduction d'espaces de noms, ce problème a été résolu. En utilisant le espace de noms mot-clé suivi du nom de l'espace de noms en haut d'un fichier PHP, il place tout le code ci-dessous dans cet espace de noms réfléchissant auquel aucun autre espace de noms ne peut accéder, sauf instruction explicite. Grâce à l'utilisation d'espaces de noms, nous sommes désormais en mesure de créer un code bien structuré et lisible, plus facile à lire et à gérer.

L'exemple ci-dessous montre comment nous pouvons implémenter notre propre espace de noms myNamespace et créer une nouvelle classe DateTime qui est complètement indépendante de celle standard fournie dans l'espace de noms global. Notamment, nous pouvons toujours utiliser la classe DateTime standard par défaut dans l'espace de noms en ajoutant une barre oblique inverse au début du nom lors de la création d'une nouvelle instance.

customMethod();/* We can still create the default DateTime object */$standardDate = new DateTime();echo $standardDate->format('Y-m-d H:i:s');

6. Usort

usort permet au développeur de trier un tableau en fonction d'une fonction de comparaison configurable par le développeur. Cela vous permet de créer des algorithmes de tri plus complexes qui ne sont pas fournis par les fonctions de tri de tableau de base standard.

Le rappel / fermeture La fonction a deux paramètres, qui sont deux éléments du tableau sur lesquels vous avez demandé le tri. C'est alors à vous de décider si le premier argument est supérieur, inférieur ou égal au second argument. Cela se fait en renvoyant une valeur entière. Tout ce qui est inférieur à zéro supposera que le premier argument est plus petit que le second. Zéro signifie que les arguments sont égaux. Supérieur à zéro signifie que le premier argument est plus grand que le second.

Une excellente application pour usort que nous avons tendance à utiliser quotidiennement est de trier un simple tableau multidimensionnel. Par exemple, disons que nous avons un tableau d'étudiants qui se compose d'un tableau associatif de nom et d'âge. En utilisant le usort fonction avec un rappel / fermeture fonction, nous pouvons choisir l'âge et trier par ordre croissant ou décroissant.

comment créer une page de manga

Par exemple, le code ci-dessous trie selon la variable d'âge pour chaque élève du tableau des élèves. La fonction de rappel / fermeture fournit l'algorithme qui compare les deux âges et décide si le premier âge est supérieur au second.

7. API de hachage

Il n'y a pas si longtemps, il y avait un problème avec des sites de grande renommée piratés et des mots de passe hachés non sécurisés volés. À l'époque, l'utilisation de la fonction MD5 était suffisante pour hacher un mot de passe, donc c'était sécurisé. Le problème avec MD5 et SHA1 est qu'ils sont rapides à exécuter l'algorithme de hachage. Parallèlement à l'invention de processeurs plus rapides et à l'utilisation de GPU, les utilisateurs ont la capacité de traiter plusieurs centaines de milliers de hachages par seconde, même sur un ordinateur de bureau ou un ordinateur portable standard.

La nouvelle API de hachage introduite dans PHP5.5 fournit une couche facile à utiliser en plus de bcrypt pour créer des hachages sécurisés (pour l'instant) qui sont beaucoup plus difficiles à résoudre par les pirates. L'exemple ci-dessous montre comment toute variable de chaîne peut être hachée. Un sel sera créé automatiquement et le routage de hachage aura un coût de 15. Le coût rendra le hachage plus sûr mais plus lent à terminer.

20]);

8. Classe SimpleXML

Lorsque nous devons traiter des fichiers XML, nous avons tendance à utiliser SimpleXML classer. Cette classe facile à utiliser vous permet de lire et de modifier des fichiers XML via des objets. L’utilisation de ces objets vous permet de renvoyer des valeurs et d’effectuer une itération sur des tableaux de la manière habituelle, ainsi qu’un ensemble de méthodes simples pour modifier la structure du XML. Si vous avez juste besoin de récupérer quelque chose de spécifique dans le XML, utilisez la méthode intégrée de XPath , vous pouvez renvoyer un ensemble de SimpleXML Objets d'élément uniquement pour le chemin que vous avez fourni.

En plus de la lecture de XML, SimpleXML fournit également les méthodes pour créer de nouveaux documents et / ou réinjecter des éléments dans le XML importé. Cela peut ensuite être sauvegardé en quelques lignes de code.

Le SimpleXML class est fourni en tant qu'extension standard pour PHP. Bien qu'il ne soit pas au cœur de PHP, il est activé par défaut.

L'exemple ci-dessous montre un exemple très simple pour obtenir une liste de photos publiques de Flickr et afficher le contenu html de chaque photo.

entry as $photo) echo $photo->content;}

9. glob

Le globe La fonction fournit une solution simple en une ligne pour créer un tableau de noms de chemin à l'aide d'un modèle que vous fournissez. globe peut ne pas être aussi rapide que d'utiliser le ouvrir et readdir combinaison, mais si vous souhaitez simplement parcourir un répertoire ou si vous recherchez un type de fichier spécifique tel qu'une image, l'utilisation de glob peut être une bonne solution à votre problème.

comment se motiver à faire de l'art

Le premier argument est une chaîne de modèle global qui est similaire à une expression régulière dans la façon dont elle fonctionne, mais la syntaxe pour créer le modèle présente quelques différences. Cela vous permet de rechercher un sous-ensemble varié de fichiers et de dossiers contenus dans un répertoire.

Un gros inconvénient de l'utilisation globe est que tous les résultats sont stockés en mémoire en une seule fois. Si vous avez un très grand dossier plein de fichiers, vous pouvez bientôt manquer de mémoire, et dans ce cas, il serait préférable d'utiliser ouvrir et readdir car il crée un tampon de lecture de flux.

En utilisant l'exemple ci-dessous, nous pouvons renvoyer tous les fichiers image dans le répertoire $ imagePath. Un tableau sera renvoyé à la variable $ images.

10. array_map

Les fonctions de base standard fournies par PHP ont tendance à fonctionner plus rapidement que la création de vos propres fonctions similaires à l'aide de code PHP. Un bon exemple de ceci est l'utilisation array_map au lieu de créer un pour ou lequel boucle. array_map vous permet de créer une fonction appelée rappeler qui sera appliqué à chaque élément d'un tableau que vous fournissez.

Par exemple, si vous aviez un tableau de lettres minuscules, un rappeler peut être créée pour mettre en majuscules tous les caractères du tableau. Sur une baie de petite taille, l'augmentation de la vitesse serait assez faible, mais une fois que vous commencez à utiliser des baies plus grandes, vous pouvez vraiment voir une différence de vitesse significative.

Dans l'exemple ci-dessous, nous convertissons l'alphabet des minuscules aux majuscules. Nous avons fourni le array_map fonction avec une chaîne du nom de la fonction que nous voulons traiter. Dans ce cas, nous utilisons strtoupper pour convertir chaque lettre du tableau.

Si des fonctionnalités plus complexes sont nécessaires, nous pouvons également fournir la fonction array_map, une fermeture comme dans le usort exemple ci-dessus.

Badge d'expert

Il existe des possibilités infinies avec PHP, mais ce n'est que lorsque vous maîtriserez parfaitement les fonctionnalités de base couvertes dans cet article que vous commencerez pleinement à obtenir votre badge d'expert PHP. Cela peut être une courbe d’apprentissage longue et abrupte, mais elle en vaut la peine. PHP est à la base d'une grande partie de notre travail chez Ecce Media, de la création de plates-formes et de systèmes de commerce électronique sur mesure, aux systèmes de gestion de contenu et bien plus encore. Dans le monde du développement Web, chaque jour apporte un nouveau défi et armé de PHP et de nos meilleurs conseils, vous serez en première position pour les relever.