Chaque ouvrier a besoin d'une bonne boîte à outils et les développeurs Web ne sont pas différents. Les fonctions d'assistance PHP sont conçues pour accélérer et homogénéiser les tâches répétitives et vous faciliter la vie. Ce premier tutoriel explique comment créer des assistants de liaison qui amélioreront vos méthodes d’ajout d’hyperliens et de liens mailto dans vos applications Web..
Oui, il n’ya rien de mieux que des appareils géniaux qui permettent de gagner du temps et qui facilitent la vie. Il existe de nombreux outils utiles qui peuvent améliorer votre flux de travail, des grilles et mises en page CSS aux systèmes et cadres de gestion de contenu à part entière..
Cependant, ce tutoriel va approfondir le concept des fonctions d’aide PHP et expliquer comment vous pouvez écrire des extraits généralisés pour votre site que vous pourrez utiliser plusieurs fois. Ce sont des fonctions qui accélèrent et nettoient votre processus de codage, de manière à minimiser les tâches répétitives et à vous permettre de consacrer plus de temps à vous soucier des choses importantes de la vie… comme le dîner.
Le lien hypertexte est l’une des tâches répétitives les plus courantes que nous avons à écrire. En créant une fonction d'assistance à cet effet, nous pouvons gagner du temps chaque fois que nous devons en écrire une, supprimer tout risque d'erreur de syntaxe et nous assurer que le code est facile à mettre à jour si des fichiers sont déplacés ou si vous déplacez un site vers un autre domaine. Pour commencer, nous allons créer une fonction très simple dans un fichier appelé helpers.php:
Ce petit bébé peut être référencé chaque fois que nous avons besoin d’obtenir le chemin complet d’un fichier et peut être référencé encore et encore au cours du développement de votre site. C'est une méthode plus utile que d'appeler simplement le domaine avec la méthode $ _SERVER ['HTTP_HOST'], car elle ne changera pas si quelqu'un a saisi le domaine avec ou sans le "www", et fonctionne avec bonheur si votre site est activé. un sous-domaine, par exemple "http: // localhost / my-site".
Il est également extrêmement utile lors du déplacement du site, car tous les chemins absolus feront référence à cette fonction unique. Par conséquent, le fait de changer la variable $ domain en nouveau domaine modifiera tous vos liens dans l’ensemble du site, en un seul échange..
Rationaliser ce code
Nous allons maintenant viser à créer une nouvelle fonction appelée "ancre" qui générera une chaîne de code HTML conforme et standard, avec un titre. Voici un exemple de ce que nous aimerions afficher:
Nouvelle pageEt voici ce que nous aimerions taper:
echo anchor ('new-page.php', 'Nouvelle page');Nous avons donc ici une fonction PHP référencée qui transmet deux variables: une pour le lien et une pour le texte affiché. Alors maintenant, toujours dans notre fichier helpers.php, nous pouvons commencer à écrire la nouvelle fonction:
ancre de la fonction ($ link, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ domain. $ link; // 3 $ data = ''; $ data. = $ text; // 4 $ data. = ""; retourne $ data;
- Ici, nous configurons la fonction "ancre" avec deux variables de passage.
- Nous obtenons ensuite le nom de domaine à partir de la fonction get_domain () déjà créée
- Ensuite, nous ajoutons la variable $ link qui a été envoyée à la fonction.
- Nous commençons ensuite à créer la chaîne de sortie dans une variable appelée $ data et utilisons la variable $ text pour la dupliquer en tant que texte visible pour le site, ainsi que la balise 'title' pour le lien..
Maintenant, nous pouvons tester cela. Créez un nouveau fichier appelé index.php, dans le même dossier que ce fichier helpers.php, et tapez:
require ('helpers.php'); echo anchor ('new-page.php', 'Nouvelle page');Ici, nous avons connecté les deux fichiers avec la fonction require (), puis appelé la fonction anchor (), en envoyant deux variables personnalisées avec elle. Si vous testez cela dans un navigateur, vous verrez notre résultat souhaité:
Nouvelle page
Le rendre flexible
Cette fonction simple peut être utile, mais deviendra sans doute assez contraignante. Nous devons ajouter trois nouvelles fonctionnalités avant que cela ne devienne vraiment génial et flexible; tout d'abord, une option pour ajouter des balises de titre personnalisées; deuxièmement, pouvoir ajouter des règles CSS; et troisièmement, une option permettant de l'ouvrir dans une nouvelle fenêtre, le cas échéant..
Passons d'abord en revue les balises de titre personnalisées. Les balises de titre sont très importantes pour le référencement, et si vous ne les mettez pas sur vos liens pour le moment, je recommande fortement que cela devienne une habitude à partir de maintenant. Cette fonction vous y obligera. En fait, il est beaucoup plus facile de l'ajouter. Si vous n'en avez pas ajouté manuellement, une copie par défaut du texte d'affichage sera utilisée à la place..
ancre de la fonction ($ link, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ domain. $ link; $ data = ''; $ data. = $ text; $ data. = ""; retourne $ data;Voici donc une version modifiée et améliorée de notre fonction anchor ().
- Maintenant, nous avons ajouté une troisième variable, $ title.
- Nous vérifions ensuite si une balise de titre personnalisée a été entrée..
- Si tel est le cas, nous ajoutons une partie à notre chaîne de sortie $ data définissant la balise title.3.
- Si rien n’a été entré, la balise de titre remplacera par défaut le texte d’affichage, $ text, comme avant..
Maintenant, si nous changeons notre appel de fonction dans index.php en:
echo anchor ('new-page.php', 'Nouvelle page', 'Message de titre personnalisé!');Nous allons nous retrouver avec cette sortie satisfaisante:
Nouvelle page
Options de style et de cible
Pour être sûr que nous pouvons toujours utiliser cet assistant même si nous devons ajouter des balises CSS ou target personnalisées, nous allons maintenant ajouter une partie à notre fonction qui lira une quatrième variable et affichera le code HTML correct en conséquence..
Nous avons besoin que cette fonction soit suffisamment intelligente pour voir si nous voulons insérer une classe CSS, un ID CSS ou une balise cible, et nous voulons également pouvoir utiliser plusieurs options, une option unique ou aucune option. du tout. Tout d’abord, modifions un peu notre fonction d’ancrage:
ancre de la fonction ($ link, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ domain. $ link; $ data = ''; $ data. = $ text; $ data. = ""; retourne $ data;
- Tout d'abord, nous ajoutons une quatrième variable passante, appelée "$ extras". Cela contiendra toutes nos options personnalisées supplémentaires.
- Ensuite, nous vérifions si nous passons un tableau dans cette variable. Nous utiliserons un tableau si nous transmettons plusieurs extras à la fonction, par exemple si nous en avons besoin d'un identifiant CSS et d'une classe CSS différente pour notre lien..
- S'il s'agit d'un tableau, nous allons le parcourir en boucle et pousser chaque élément à travers une nouvelle fonction appelée "parse_extras". Cette fonction prendra les bits supplémentaires que nous avons entrés et créera la sortie html correspondante.
- Si $ extras est une chaîne, cela signifie que nous n’avons transmis qu’une règle; afin que nous puissions exécuter notre nouvelle fonction parse_extras () sur le seul élément. Utilement, la fonction is_string () renvoie FALSE si la variable est vide. donc avec ce morceau de code, si rien n'est passé par $ extras, alors aucun code ne sera exécuté, et il sera ignoré.
Maintenant nous devons créer notre nouvelle fonction, parse_extras ():
function parse_extras ($ rule) if ($ rule [0] == "#") // 1 $ id = substr ($ rule, 1, strlen ($ rule)); // 2 $ data = ''; // 3 return $ data; if ($ rule [0] == ".") // 4 $ class = substr ($ rule, 1, strlen ($ rule)); $ data = ''; retourne $ data; if ($ rule [0] == "_") // 5 $ data = 'target = "'. $ rule. '"'; retourne $ data;Cette fonction tire parti du fait que tous nos extras commencent par un identifiant unique. Si nous passons un ID CSS, il commencera par un dièse (#), si nous passons une classe CSS, il commencera par un point (.), Et si nous passons une cible, elle commencera avec un trait de soulignement (_).
- Nous pouvons vérifier quel est le premier caractère d'une chaîne en utilisant la syntaxe $ string [0]. Vous pouvez être habitué à utiliser cette syntaxe pour récupérer le premier élément d'un tableau, mais c'est également une méthode très utile et rapide pour rechercher des caractères spécifiques dans des chaînes..
- Ensuite, nous créons une nouvelle variable, qui est notre règle entrée $, avec le premier caractère coupé. Maintenant que nous avons identifié l’objet de la règle, nous n’en avons plus besoin pour notre sortie HTML. Cette combinaison de substr () et strlen () est un extrait utile pour couper le premier caractère d’une chaîne..
- Nous pouvons maintenant créer notre chaîne de sortie $ data html, prête à être renvoyée. Cette méthode peut maintenant être répétée - d'abord si la règle $ est une classe CSS, et ensuite s'il s'agit d'une balise cible HTML. Il est à noter que nous n'avons pas besoin de rogner le premier caractère de la balise cible, car html utilise le soulignement (_) précédent, contrairement aux règles CSS..
Maintenant que nous avons créé toutes nos fonctions nécessaires, nous pouvons revenir à notre fichier index.php et modifier notre appel anchor ()..
echo anchor ('new-page.php', 'Nouvelle page', 'Message de titre personnalisé!', '# special_link');Ici, nous passons un identifiant CSS et nous recevons une sortie de:
Nouvelle pageSi nous devions ajouter un tableau d’extras, au cas où vous souhaiteriez l’ouvrir dans une nouvelle fenêtre et disposer d’un identifiant et d’une classe spécifiques (improbable, mais méritant de montrer la flexibilité!), Nous le ferions comme suit:
$ extras = array ('# special_id', '. special_class', '_ blank'); echo anchor ('new-page.php', 'Nouvelle page', 'Message de titre personnalisé!', $ extras);Ici, nous pré-établissons une variable de tableau appelée extras, juste pour garder le code ordonné, puis nous l'envoyons avec la fonction anchor (). Cela produira la sortie suivante:
Nouvelle page
Liens Mailto
Enfin, nous verrons comment créer des liens mailto dans vos applications. Nous allons créer une fonction appelée mailto () qui sera assez similaire à la fonction anchor (), avec une différence majeure: nous allons implémenter un chiffrement sur la sortie html afin que l'adresse email ne puisse pas être explorée par spam- araignées, et gardera les adresses électroniques de vos clients en toute sécurité.
La méthode que nous allons utiliser pour masquer l'adresse email utilise la fonction PHP plutôt géniale de str_rot13 (), qui prend simplement une chaîne et déplace tous les caractères alphabétiques de treize lettres, dans l'alphabet. Si vous avez déjà eu recours à des dépisteurs, vous vous souviendrez probablement d'avoir bafouillé avec de tels codes et d'avoir décidé de devenir un espion quand vous seriez grand.
Le chiffrement générera notre code de manière déformée, puis, à l'aide d'une fonction "antidote" de JavaScript, nous pouvons extraire les caractères de treize endroits de l'alphabet et restaurer leur signification d'origine. Cependant, comme cette fonction est côté client, les actions "antidote" uniquement et le texte revient à son état normal, lorsqu'il est affiché sur un écran. Ainsi, les araignées, les crawlers et les spambots, pour la plupart, n'auront aucune idée de ce qu'ils lisent.
Il convient probablement de mentionner qu'il existe de nombreuses méthodes pour masquer les liens mailto, certaines beaucoup plus sécurisées que d'autres, d'autres moins. J'aime utiliser cette méthode et je n'ai jamais vu de spam envoyer à aucun de mes clients à cause de cela. Il convient également de mentionner que la méthode JavaScript elle-même a été développée par Christoph Burgdorfer et ressemble à ceci:
Cela prend la chaîne brouillée "Njrfbzr frperg fcl pbqr" et décale tous les caractères, de sorte que l'affichage sur votre écran ressemble à ceci:
Super code d'espionnage secretCependant, si vous examinez le code source, ce que verront les araignées et les robots d'exploration, vous ne verrez aucune mention de ce résultat - ainsi, il reste masqué..
Nous ne verrons pas comment ce JavaScript fonctionne, car il s’agit d’un tutoriel sur PHP, après tout. Au lieu de cela, nous examinerons comment nous pouvons implémenter cela dans notre nouvelle fonction mailto ().
fonction mailto ($ email, $ texte, $ titre, $ extras) // 1 $ link = 'document.write ("'; // 4 $ data. = $ link; // 5 $ data. = '". remplacez (/ [a-zA-Z] / g, fonction (c) return String.fromCharCode ((c<="Z"?90:122)>= (c = c.charCodeAt (0) +13)? c: c-26);)); '; $ data. = '"'; if ($ title) // 6 $ data. = 'title ="'. $ titre. '"'; else $ data. = 'title ="'. $ text. '"'; if (is_array ($ extras)) foreach ($ extras en tant que $ règle) $ data. = parse_extras ($ règle); if (is_string ($ extras)) $ data. = parse_extras ( $ extras); $ data. = ">"; $ data. = $ text; $ data. = ""; // 7 return $ data; // 8Alors regardons ce qui est différent ici.
- Premièrement, nous transmettons toujours quatre variables à cette fonction, bien que, pour des raisons esthétiques, nous ayons renommé la première variable en $ email..
- Maintenant, nous créons une nouvelle variable avec la sortie HTML pour le lien mailto. Il convient de noter que nous avons ajouté une barre oblique inverse avant les guillemets, car cette chaîne apparaîtra plus tard dans la fonction JavaScript. Nous devons nous assurer que les guillemets ne le confondent pas..
- Ensuite, nous implémentons la fonction str_rot13 () sur la variable $ link, de sorte qu’elle soit codée..
- Nous pouvons ensuite créer notre variable de retour $ data, qui contient le code JavaScript prêt à être généré..
- Nous plaçons notre lien $ encodé au milieu de tout cela - prêt à être traduit.
- Maintenant que le JavaScript a été ajouté à notre variable $ data, le reste de la fonction vous semblera familier..
- Nous vérifions si une balise de titre personnalisée a été ajoutée, puis nous analysons nos extras $, comme avant. Encore une fois, nous avons fermé nos balises…
- … Et renvoyer les données.
Nous pouvons maintenant utiliser la syntaxe suivante dans notre fichier index.php pour afficher notre lien mailto:
echo mailto ('[email protected] ',' Contactez-moi ');Ou, si nous avons besoin d'éléments personnalisés, comme auparavant, nous pouvons ajouter d'autres variables:
$ extras = array ('# special_id', '. special_class', '_ blank'); echo mailto ('[email protected] ',' Contactez-moi ',' Contactez votre bon ami Barry. ', $ extras);
Conclusion
Ceci conclut notre première incursion dans les fonctions d’aide PHP. C’est vraiment la partie visible de l’iceberg et, la prochaine fois, nous commencerons à examiner des outils plus complexes, au nom de l’aide à la rédaction..
La création et la validation de formulaires doivent faire partie de mes bêtes noires lorsque je les crée à partir de zéro. Il y a beaucoup de code répétitif, une écriture fastidieuse et des risques d'erreurs. Une série de fonctions permettant à la fois de générer des formulaires correctement structurés et de vérifier les données de publication pour rechercher des adresses électroniques, des mots de passe, une longueur de chaîne, etc. valides, peut constituer une véritable bouée de sauvetage. Ah oui, créer des formulaires html à partir de rien n'a pas besoin d'être aussi gai que vous le pensiez.
Si vous avez d'autres idées sur ce qu'il serait vraiment utile de voir dans une fonction d'aide PHP, assurez-vous de les commenter.!