Fiecare muncitor are nevoie de un set de instrumente bun, iar dezvoltatorii web nu sunt diferiti. Funcțiile helper PHP sunt concepute pentru a accelera și omogeniza sarcinile repetitive și pentru a vă face viața mult mai ușoară. Acest prim tutorial explică modul de creare a ajutoarelor pentru link-uri care vă vor îmbunătăți metodele de adăugare a hiperlegăturilor și a link-urilor mailto în aplicațiile dvs. web.
Da, nu există nimic asemănător unor dispozitive minunate, care economisesc timp și care ușurează viața. Există multe instrumente utile care vă pot îmbunătăți fluxul de lucru, de la rețele și layere CSS la sisteme și cadre de management cu drepturi depline.
Acest tutorial, totuși, se va implica în conceptul de funcții helper PHP și cum puteți scrie fragmente generalizate pentru site-ul dvs. pe care le veți putea folosi din nou și din nou. Acestea sunt funcții care accelerează și curăță procesul de codificare, astfel încât sarcinile repetitive pot fi reduse la minimum și puteți petrece mai mult timp îngrijorându-vă de lucrurile importante din viață ... cum ar fi cina.
Una dintre cele mai frecvente sarcini repetitive pe care le găsim că trebuie să le scriem este hyperlinkul. Prin crearea unei funcții de ajutor pentru acest lucru, putem economisi timp ori de câte ori avem nevoie să scriem, ștergem orice șansă de erori de sintaxă și asigurăm faptul că codul este ușor de actualizat dacă sunt mutate fișiere sau dacă mutați un site într-o altă domeniu. Pentru a începe, vom face o funcție foarte simplă într-un fișier numit helpers.php:
Acest mic copil poate fi referit ori de câte ori avem nevoie pentru a obține calea completă la un fișier, și pot fi menționate de mai multe ori în timpul dezvoltării site-ului. Aceasta este o metodă mai utilă decât simpla chemare a domeniului cu metoda $ _SERVER ['HTTP_HOST'], deoarece nu se va schimba dacă cineva a scris în domeniu cu sau fără "www" și lucrează fericit dacă site-ul dvs. este activat un subdomeniu, de exemplu "http: // localhost / my-site".
Este, de asemenea, incredibil de util atunci când se deplasează site-ul, deoarece toate căile absolute vor face trimitere la această singură funcție, schimbarea variabilei de domeniu $ pe noul domeniu va schimba toate link-urile dvs. la nivel global, într-o singură lucrare.
Optimizați acest cod
Ceea ce vom urmări să facem acum este să creăm o nouă funcție numită "ancora", care va scoate un șir standard de html compatibil cu un titlu. Iată un exemplu despre ceea ce dorim să obținem:
Pagina nouaȘi aici este ceea ce vrem să scriem:
echo anchor ('new-page.php', 'New Page');Deci, aici avem o funcție PHP la care se face referință care are două variabile care sunt transmise: una pentru legătură și una pentru textul afișat. Deci acum, încă în fișierul helpers.php, putem începe să scriem noua funcție:
ancora funcției ($ link, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ domeniu. link-ul $; // 3 $ data = ''; $ date = $ text; // 4 $ date. = ""; returnați date $;
- Aici, am setat funcția "anchor" cu două variabile trecătoare.
- Apoi, obținem numele domeniului din funcția get_domain () pe care am creat-o deja
- Apoi, adăugăm variabila $ link care a fost trimisă la această funcție.
- Apoi, începem să creăm șirul de ieșire într-o variabilă denumită $ data și să folosim variabila text $ pentru a se dubla atât ca textul vizibil pentru site, cât și ca etichetă "title" pentru link.
Acum putem testa acest lucru. Creați un fișier nou numit index.php, în același folder ca și acest fișier helpers.php, și tastați:
require ( 'helpers.php'); echo anchor ('new-page.php', 'New Page');Aici, am conectat cele două fișiere cu funcția requ () și apoi am sunat funcția anchor (), trimițând două variabile personalizate cu ea. Dacă testați acest lucru într-un browser, veți vedea rezultatul dorit:
Pagina noua
Faceți-o flexibilă
Această funcție simplă poate fi utilă, dar fără îndoială va deveni suficient de curând. Trebuie să adăugăm trei caracteristici noi înainte de a deveni cu adevărat minunat și flexibil; în primul rând, o opțiune de adăugare a etichetelor personalizate; în al doilea rând, pentru a putea adăuga reguli CSS; și în al treilea rând, o opțiune pentru deschiderea acesteia într-o fereastră nouă, dacă este cazul.
Să examinăm mai întâi etichetele de titlu personalizate. Etichetele de titlu sunt foarte importante pentru scopurile SEO și, dacă nu le puneți pe link-urile dvs. în acest moment, recomandăm cu insistență să devină un obicei de acum înainte. Această funcție vă va ajuta să vă forțați să faceți asta - de fapt, deoarece este mult mai ușor de adăugat și dacă nu ați adăugat una manuală, va fi folosită o copie implicită a textului afișat.
ancora funcției ($ link, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ domeniu. link-ul $; $ date = ''; $ date = $ text; $ date. = ""; returnați date $;Deci, aici este o versiune modificată și îmbunătățită a funcției noastre anchor ().
- Acum am adăugat oa treia variabilă, titlu $.
- Apoi executați un cec pentru a vedea dacă a fost introdusă o etichetă personalizată.
- Dacă este cazul, adăugăm o porțiune la șirul de date $ output care stabilește eticheta titlului3.
- Dacă nu a fost introdus nimic, va fi afișat implicit eticheta titlului în textul afișat, $ text, așa cum a fost înainte.
Acum, dacă ne schimbăm funcția apel în index.php la:
echo anchor ('new-page.php', 'New Page', 'Custom Title Message!');Vom ajunge la această ieșire satisfăcătoare:
Pagina noua
Styling și Opțiuni țintă
Pentru a ne asigura că putem folosi în continuare acest ajutor, chiar dacă trebuie să adăugăm etichete personalizate CSS sau țintă, vom adăuga acum o parte a funcției noastre care va citi o a patra variabilă și va afișa corect html-ul corespunzător.
Avem nevoie ca această funcție să fie suficient de inteligentă pentru a vedea dacă vrem să introducem o clasă CSS, un ID CSS sau o etichetă țintă și dorim, de asemenea, să putem pune în mai multe opțiuni sau o opțiune singulară sau nici o opțiune deloc. Mai întâi, să modificăm puțin funcția ancorei:
ancora funcției ($ link, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ domeniu. link-ul $; $ date = ''; $ date = $ text; $ date. = ""; returnați date $;
- În primul rând, adăugăm oa patra variabilă de trecere, numită "$ extras". Aceasta va conține toate opțiunile personalizate suplimentare.
- Apoi, verificăm dacă ștergem o matrice în această variabilă. Vom folosi un matrice dacă transmitem mai multe funcții suplimentare, de exemplu dacă avem nevoie de un cod CSS și de o clasă CSS diferită pentru linkul nostru.
- Dacă este o matrice, vom trece prin ea și vom împinge fiecare element printr-o nouă funcție numită "parse_extras". Această funcție va lua ce biți suplimentari am introdus și vom crea o ieșire html corespunzătoare.
- Dacă extrasul de $ este un șir, înseamnă că am trecut doar printr-o singură regulă; astfel încât să putem rula noua noastră funcție parse_extras () pe elementul unic. În mod util, funcția is_string () returnează FALSE dacă variabila este goală; astfel încât, cu acest cod de cod, în cazul în care nimic nu este trecut prin $ extras, atunci nici un cod nu va fi rulat, și va trece prin.
Acum trebuie să ne facem noua funcție, parse_extras ():
funcția parse_extras ($ rule) if ($ rule [0] == "#") // 1 $ id = substr (regula $, 1, strlen ($ rule)); // 2 $ date = ''; // 3 returnează date $; dacă ($ rule [0] == ".") // 4 $ class = substr (regula $, 1, strlen (regulă $)); $ date = ''; returnați date $; dacă ($ rule [0] == "_") // 5 $ data = 'target = "'. $ regulă." "'; returnați date $;Această funcție folosește faptul că toate extrasele noastre vor începe cu un identificator unic. Dacă transmitem un ID CSS, acesta va începe cu un hash (#), dacă vom trece o clasă CSS, va începe cu o perioadă (.) Și dacă vom trece o țintă, aceasta va începe cu o subliniere (_).
- Putem verifica care este primul caracter al unui șir folosind sintaxa $ string [0]. S-ar putea să fiți obișnuit să utilizați această sintaxă pentru a prelua primul element într-un matrice, dar este, de asemenea, o metodă foarte utilă și rapidă pentru găsirea de caractere specifice în șiruri de caractere.
- Apoi, vom crea o nouă variabilă, care este regula noastră introdusă $, cu primul personaj tăiat. Acum, că am identificat ce regula este, nu mai avem nevoie de ea pentru ieșirea html. Această combinație de substr () și strlen () este un fragment util pentru tăierea primului caracter dintr-un șir.
- Acum putem crea șirul de date HTML de date $, gata de revenire. Această metodă poate fi repetată - în primul rând, dacă regula $ este o clasă CSS și apoi dacă este o etichetă țintă html. Merită să menționăm faptul că nu este necesar să scoatem primul caracter pentru eticheta țintă, deoarece html folosește sublinierea precedentă (_), spre deosebire de regulile CSS.
Acum că am creat toate funcțiile necesare, putem reveni la fișierul index.php și putem modifica apelul anchor ().
echo anchor ('new-page.php', 'New Page', 'Custom Title Message!', '# special_link');Aici trecem un cod CSS și primim o producție de:
Pagina nouaDacă am adăuga o serie de extras, în cazul în care doriți să se deschidă într-o fereastră nouă și să aveți un ID și o clasă specifică (este puțin probabil, dar merită să arătați flexibilitatea!), Am face-o astfel:
$ extras = array ('# special_id', 'special_class', '_ blank'); echo anchor ('new-page.php', 'New Page', 'Custom Title Message!', $ extras);Aici, pre-stabilim o variabilă matrice numită extra, doar pentru a păstra codul ordonat și apoi trimite-l împreună cu funcția anchor (). Aceasta va produce următoarea ieșire:
Pagina noua
Linkuri de poștă electronică
În cele din urmă, vom examina cum să creați linkuri de poștă electronică în aplicațiile dvs. Vom face o funcție numită mailto (), care va fi destul de similar cu funcția anchor (), cu o diferență majoră: vom implementa un cifru pe ieșirea html astfel încât adresa de e-mail să nu poată fi accesată cu crawlere de către spam- păianjeni și va păstra adresa de e-mail a clientului dvs. securizată.
Metoda pe care o vom folosi pentru a ascunde adresa de e-mail folosește funcția str_rot13 () PHP, care este pur și simplu minunată, care ia pur și simplu un șir și mută în alfabet toate caracterele alfabetice treisprezece litere. Dacă te-ai dus vreodată la cercetași băieți, probabil că îți amintești să te muți în jur cu astfel de coduri și să decizi că probabil vei fi un spion când vei crește.
Cifrul ne va scoate codul într-un mod ciudat, iar apoi, folosind o funcție antidotă JavaScript, putem trage caracterele înapoi în treisprezece locuri pe alfabet și le putem restabili sensul original. Cu toate acestea, deoarece această funcție este de partea clientului, acțiunile "antidot" sunt numai acțiuni, iar textul revine la sinele său normal, când este afișat pe ecran. Astfel, păianjenii, crawlerele și spamboturile, în cea mai mare parte, nu vor avea indiciu ce citesc.
Este, probabil, demn de menționat faptul că există multe metode de ascundere a link-urilor mailto, unele mult mai sigure decât acestea, altele mai puțin. Îmi place să folosesc această metodă și nu am văzut niciodată spam prin oricare dintre clienții mei datorită acesteia. Merită menționat și faptul că metoda JavaScript în sine a fost dezvoltată de Christoph Burgdorfer și arată astfel:
Acest lucru ia șirul "Njrfbzr frperg fcl pbqr" și schimbă toate caracterele, astfel încât afișajul de pe ecran să arate astfel:
Minunat cod spion secretCu toate acestea, dacă examinați codul sursă, ceea ce vor vedea păianjenii și crawlerele, nu veți vedea nici o mențiune despre acest rezultat - astfel, acesta rămâne ascuns.
Nu vom analiza modul în care funcționează JavaScript, deoarece acesta este un tutorial PHP, la urma urmei. În schimb, vom examina modul în care putem implementa acest lucru în noua noastră funcție mailto ().
funcția mailto ($ email, $ text, $ title, $ extras) // 1 $ link = 'document.write ("'; // 4 $ date. = $ link; înlocuiți (/ [a-zA-Z] / g, funcția (c) return String.fromCharCode ((c<="Z"?90:122)>= (C = c.charCodeAt (0) 13) c: c-26);)); „; $ data = '' '; dacă ($ title) // 6 $ data. =' title = "'. titlul $. '' '; altceva $ data. =' title = ''. $ text. ')' dacă (is_array ($ extras)) foreach ($ extras ca regulă $) $ data. = parse_extras ($ rule); dacă (is_string ($ extras)) $ data. = parse_extras $ extra.); $ date. = ">"; $ date. = $ text; $ date; = ""; // 7 returnează $ date; // 8Deci, haideți să aruncăm o privire la ceea ce este diferit aici.
- În primul rând, încă trecem prin patru variabile la această funcție, deși, pentru scopuri cosmetice, am redenumit prima variabilă la adresa de e-mail $.
- Acum, creăm o nouă variabilă cu ieșirea html pentru linkul mailto. Merită remarcat faptul că am adăugat o coloană vertebrală înaintea cotațiilor, deoarece acest șir va apărea mai târziu în interiorul funcției JavaScript și trebuie să ne asigurăm că mărcile de cotare nu o confundă.
- Apoi implementăm funcția str_rot13 () pe variabila $ link, astfel încât să fie codată.
- Apoi, putem crea o variabilă de returnare a datelor $, care conține gata de afișare a JavaScript-ului.
- Am pus legătura noastră codată în mijlocul a toate - gata să fie tradusă.
- Acum că JavaScript a fost adăugat la variabila noastră de date $, restul funcției va arăta familiar.
- Verificăm să vedem dacă a fost adăugată o etichetă titulară personalizată și apoi analizăm extrasele noastre $, la fel ca înainte. Încă o dată, primim etichetele noastre închise ...
- ... și returnează datele.
Acum putem folosi următoarea sintaxă în fișierul index.php pentru a afișa link-ul nostru de mail:
echo mailto ('[email protected] ',' Contact Me ');Sau, dacă avem nevoie de elemente personalizate, la fel ca înainte, putem adăuga mai multe variabile:
$ extras = array ('# special_id', 'special_class', '_ blank'); echo mailto ('[email protected] ',' Contactați-mă ',' Contactați-vă pe bunul tău prieten Barry ', $ extras);
Concluzie
Aceasta incheie prima noastra incursiune in functiile PHP helper. Acesta este foarte mult vârful aisbergului și, data viitoare, vom începe să revizuim câteva instrumente mai complexe, în numele formatorilor.
Formarea și validarea formularului trebuie să fie una dintre animalele de companie pe care le crează atunci când le creează de la zero - există multe coduri repetitive, scriere dureroasă și șanse de erori. O serie de funcții pe care ambele formează corect formulare și verifică datele postale pentru adresele de e-mail valide, parolele, lungimea șirului, etc., pot fi un adevărat lifesaver. Ah da, crearea de formulare html de la zero nu trebuie să fie atât de groan-demn precum credeai anterior.
Dacă aveți alte idei despre ceea ce ar fi util să vedeți într-o funcție PHP helper, asigurați-vă că ați comentat ideile!