Aumentare la produttività creando funzioni helper PHP

Ogni operaio ha bisogno di una buona cassetta degli attrezzi e gli sviluppatori web non sono diversi. Le funzioni helper di PHP sono progettate per velocizzare e omogeneizzare le attività ripetitive e rendere la vita molto più semplice. Questo primo tutorial spiega come creare link helper che miglioreranno i tuoi metodi per aggiungere collegamenti ipertestuali e mailto nelle tue applicazioni web.


Un introduzione

Sì, non esistono dispositivi straordinari e che fanno risparmiare tempo e che semplificano la vita. Ci sono molti strumenti utili che possono migliorare il tuo flusso di lavoro, dalle griglie e layout CSS ai sistemi e ai framework di gestione dei contenuti a pieno titolo.

Questo tutorial, tuttavia, approfondirà il concetto di funzioni helper di PHP e come scrivere snippet generalizzati per il tuo sito che potrai utilizzare più e più volte. Queste sono funzioni che velocizzano e ripuliscono il processo di codifica, in modo che le attività ripetitive possano essere ridotte al minimo e puoi dedicare più tempo a preoccuparti delle cose importanti della vita ... come la cena.


Aiutanti collegamento ipertestuale

Uno dei compiti ripetitivi più comuni che ci troviamo a dover scrivere è il collegamento ipertestuale. Creando una funzione di supporto per questo possiamo risparmiare tempo ogni volta che ne dobbiamo scrivere uno, rimuovere ogni possibilità di errori di sintassi e assicurarci che il codice sia facile da aggiornare se i file vengono spostati o se si sta spostando un sito su un altro dominio. Per iniziare, faremo una funzione molto semplice in un file chiamato helpers.php:

  

Questo piccolo bambino può essere utilizzato ogni volta che è necessario ottenere il percorso completo di un file e può essere consultato più e più volte durante lo sviluppo del sito. Questo è un metodo più utile rispetto alla semplice chiamata del dominio con il metodo $ _SERVER ['HTTP_HOST'], perché non cambierà se qualcuno ha digitato il dominio con o senza "www", e funziona felicemente se il tuo sito è attivo un sottodominio, ad esempio "http: // localhost / my-site".

È anche incredibilmente utile quando si sposta il sito, perché tutti i percorsi assoluti si riferiranno a questa singola funzione, quindi la modifica della variabile $ domain nel nuovo dominio cambierà tutti i link in tutto il sito, in un solo colpo.


Razionalizza quel codice

Quello che cercheremo di fare ora è creare una nuova funzione chiamata "anchor" che emetterà una stringa standard di html compatibile con un titolo. Ecco un esempio di ciò che vorremmo produrre:

 Nuova pagina

Ed ecco cosa vorremmo scrivere:

 echo anchor ('new-page.php', 'Nuova Pagina');

Quindi qui abbiamo una funzione PHP che fa riferimento a due variabili passate: una per il collegamento e una per il testo di visualizzazione. Così ora, sempre nel nostro file helpers.php, possiamo iniziare a scrivere la nuova funzione:

 funzione anchor ($ link, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ dominio. $ Link; // 3 $ data = ''; $ data. = $ testo; // 4 $ data. = ""; restituire $ dati; 
  1. Qui, impostiamo la funzione "anchor" con due variabili che passano.
  2. Otteniamo quindi il nome di dominio dalla funzione get_domain () che abbiamo già creato
  3. Successivamente, aggiungiamo la variabile $ link che è stata inviata alla funzione.
  4. Iniziamo quindi a creare la stringa di output in una variabile chiamata $ data, e utilizzare la variabile $ text per raddoppiare sia come testo visibile per il sito, sia come tag 'title' per il link.

Ora possiamo testare questo. Crea un nuovo file chiamato index.php, nella stessa cartella del file helpers.php, e scrivi:

 require ( 'helpers.php'); echo anchor ('new-page.php', 'Nuova Pagina');

Qui, abbiamo collegato i due file con la funzione require (), quindi abbiamo chiamato la funzione anchor (), inviando due variabili personalizzate con esso. Se provi questo in un browser vedrai il nostro risultato desiderato:

 Nuova pagina

Rendi flessibile

Questa semplice funzione può essere utile, ma senza dubbio diventerà presto costrittiva. Dobbiamo aggiungere tre nuove funzionalità prima che diventino davvero fantastiche e flessibili; in primo luogo, un'opzione per aggiungere tag title personalizzati; in secondo luogo, essere in grado di aggiungere regole CSS; e in terzo luogo, un'opzione per l'apertura in una nuova finestra, se necessario.

Esaminiamo prima i tag del titolo personalizzati. I tag del titolo sono molto importanti ai fini SEO, e se non li metti sui tuoi link al momento, ti consiglio vivamente di diventare un'abitudine d'ora in poi. Questa funzione ti aiuterà a costringerti a farlo - in realtà, poiché è molto più semplice da aggiungere, e se non ne hai aggiunto uno manualmente, verrà utilizzata una copia predefinita del testo visualizzato.

 funzione anchor ($ link, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ dominio. $ Link; $ data = ''; $ data. = $ testo; $ data. = ""; restituire $ dati; 

Quindi ecco una versione modificata e migliorata della nostra funzione anchor ().

  1. Ora abbiamo aggiunto una terza variabile, $ title.
  2. Quindi eseguiamo un controllo per vedere se è stato inserito un tag titolo personalizzato.
  3. Se è così, aggiungiamo una porzione alla nostra stringa di dati $ di output che imposta il tag del titolo3.
  4. Se non è stato inserito nulla, per impostazione predefinita il tag del titolo verrà visualizzato sul testo visualizzato, $ text, come era prima.

Ora, se cambiamo la nostra chiamata di funzione in index.php a:

 echo anchor ('new-page.php', 'New Page', 'Custom Title Message!');

Finiremo con questo risultato soddisfacente:

 Nuova pagina

Styling e opzioni di destinazione

Per essere sicuri di poter ancora utilizzare questo helper anche se abbiamo bisogno di aggiungere CSS personalizzati o tag di destinazione, ora aggiungeremo una parte alla nostra funzione che leggerà una quarta variabile e produrrà l'html corretto di conseguenza.

Abbiamo bisogno che questa funzione sia abbastanza intelligente per vedere se vogliamo inserire una classe CSS, un ID CSS o un tag target e vogliamo anche essere in grado di inserire più opzioni, o un'opzione singolare, o nessuna opzione affatto. Innanzitutto, modifichiamo leggermente la nostra funzione di ancoraggio:

 funzione anchor ($ link, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ dominio. $ Link; $ data = ''; $ data. = $ testo; $ data. = ""; restituire $ dati; 
  1. Per prima cosa, aggiungiamo una quarta variabile passante, chiamata "$ extra". Questo conterrà tutte le nostre opzioni extra personalizzate.
  2. Successivamente, controlliamo se stiamo passando un array in questa variabile. Useremo un array se stiamo passando molti extra alla funzione, per esempio se abbiamo bisogno di avere un ID CSS e una classe CSS diversa per il nostro link.
  3. Se si tratta di un array, lo faremo scorrere e spingere ogni elemento attraverso una nuova funzione chiamata "parse_extras". Questa funzione prenderà i bit extra che abbiamo inserito e creerà l'output html corretto e corrispondente.
  4. Se $ extras è una stringa, significa che abbiamo passato solo una regola attraverso; quindi possiamo eseguire la nostra nuova funzione parse_extras () sul singolo elemento. Utilmente, la funzione is_string () restituisce FALSE se la variabile è vuota; quindi con questo pezzo di codice, se non viene passato nulla tramite $ extra, non verrà eseguito alcun codice e salterà.
  5. Ora dobbiamo fare la nostra nuova funzione, 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 = ''; restituire $ dati;  if ($ rule [0] == "_") // 5 $ data = 'target = "'. $ rule. '"' '; restituire $ dati; 

    Questa funzione sfrutta il fatto che tutti i nostri extra inizieranno con un identificatore univoco. Se stiamo passando un ID CSS, inizierà con un cancelletto (#), se stiamo passando una classe CSS, inizierà con un punto (.), E se stiamo passando un bersaglio, inizierà con un carattere di sottolineatura (_).

    1. Possiamo controllare quale sia il primo carattere di una stringa usando la sintassi $ string [0]. Potresti essere abituato a usare questa sintassi per recuperare il primo elemento in un array, ma è anche un metodo molto utile e veloce per trovare caratteri specifici all'interno delle stringhe.
    2. Successivamente, creiamo una nuova variabile, che è la nostra regola $ immessa, con il primo carattere tagliato. Ora che abbiamo identificato la regola, non ne abbiamo più bisogno per il nostro output html. Questa combinazione di substr () e strlen () è uno snippet utile per tagliare il primo carattere fuori da una stringa.
    3. Ora possiamo creare la nostra stringa di output $ data html, pronta per essere restituita. Questo metodo può ora essere ripetuto, in primo luogo se la regola $ è una classe CSS e quindi se si tratta di un tag di destinazione html. Vale la pena ricordare che non è necessario ritagliare il primo carattere per il tag di destinazione, in quanto html utilizza il carattere di sottolineatura precedente (_), diversamente dalle regole CSS.

    Ora che abbiamo creato tutte le funzioni necessarie, possiamo tornare al nostro file index.php e modificare la nostra chiamata anchor ().

     echo anchor ('new-page.php', 'Nuova pagina', 'Custom Title Message!', '# special_link');

    Qui stiamo passando un ID CSS e riceviamo un output di:

     Nuova pagina

    Se dovessimo aggiungere una serie di extra, nel caso in cui volessi che si aprisse in una nuova finestra e avessi un ID e una classe specifici (improbabile, ma vale la pena mostrare la flessibilità!), Faremmo così:

     $ extras = array ('# special_id', '. special_class', '_ blank'); echo anchor ('new-page.php', 'Nuova Pagina', 'Custom Title Message!', $ extra);

    Qui, pre-stabiliamo una variabile di array chiamata extras, solo per mantenere il codice in ordine e quindi inviarlo insieme alla funzione anchor (). Questo produrrà il seguente risultato:

     Nuova pagina

    Mailto Links

    Infine, daremo un'occhiata a come creare collegamenti mailto nelle tue applicazioni. Creeremo una funzione chiamata mailto () che sarà abbastanza simile alla funzione anchor (), con una differenza importante: implementeremo una cifra sull'output html in modo che l'indirizzo email non possa essere sottoposto a scansione da spam- spider e manterranno sicuri gli indirizzi email dei tuoi clienti.

    Il metodo che useremo per nascondere l'indirizzo e-mail utilizza la funzione PHP str_rot13 () piuttosto impressionante, che prende semplicemente una stringa e sposta tutti i caratteri alfabetici di tredici lettere, nell'alfabeto. Se sei mai andato da boy scout, probabilmente ti ricordi di chiacchierare con tali codici, e decidendo che probabilmente saresti diventato una spia quando crescerai.

    Il cifrario produrrà il nostro codice in modo confuso e quindi, utilizzando una funzione JavaScript 'antidoto', possiamo riportare i caratteri indietro di tredici punti sull'alfabeto e ripristinare il loro significato originale. Tuttavia, poiché questa funzione è sul lato client, le azioni "antidoto" sono le uniche e il testo ritorna al suo stato normale, quando mostrato su uno schermo. Quindi, ragni, crawler e spambots, per la maggior parte, non hanno la minima idea di cosa stanno leggendo.

    Probabilmente vale la pena ricordare che ci sono molti metodi per nascondere i collegamenti mailto, alcuni molto più sicuri di questo, altri meno. Mi piace usare questo metodo e non ho mai visto nessuno spam arrivare a nessuno dei miei clienti a causa di questo. Vale anche la pena ricordare che il metodo JavaScript stesso è stato sviluppato da Christoph Burgdorfer, e assomiglia a questo:

     

    Questo prende la stringa "Njrfbzr frperg fcl pbqr" e sposta tutti i caratteri, in modo che il display sullo schermo assomiglia a:

     Impressionante codice segreto segreto

    Tuttavia, se rivedi il codice sorgente, che è ciò che vedranno gli spider e i crawler, non vedrai alcun riferimento a questo risultato, quindi rimarrà nascosto.

    Non esamineremo i dettagli di come funziona JavaScript, dato che questo è un tutorial PHP, dopo tutto. Invece, esamineremo come possiamo implementarlo nella nostra nuova funzione mailto ().

     function mailto ($ email, $ text, $ title, $ extras) // 1 $ link = 'document.write ("'; // 4 $ data. = $ link; // 5 $ data. = '". replace (/ [a-zA-Z] / g, function (c) return String.fromCharCode ((c<="Z"?90:122)>= (C = c.charCodeAt (0) 13) C:? C-26);)); '; $ data. = '"'; if ($ title) // 6 $ data. = 'title ="'. $ titolo. '"'; else $ data. = 'title ="'. $ testo. '"'; if (is_array ($ extra)) foreach ($ extra come $ regola) $ data. = parse_extras ($ rule); if (is_string ($ extras)) $ data. = parse_extras ( $ extra); $ data. = ">"; $ data. = $ text; $ data. = ""; // 7 return $ data; // 8

    Diamo un'occhiata a ciò che è diverso qui.

    1. Innanzitutto, stiamo ancora passando attraverso quattro variabili per questa funzione, sebbene, per scopi estetici, abbiamo rinominato la prima variabile in $ email.
    2. Ora creiamo una nuova variabile con l'output html per il collegamento mailto. Vale la pena notare che abbiamo aggiunto una barra rovesciata prima delle virgolette, poiché questa stringa verrà in seguito visualizzata all'interno della funzione JavaScript, e dobbiamo assicurarci che le virgolette non la confondano.
    3. Successivamente, implementiamo la funzione str_rot13 () sulla variabile $ link, in modo che sia codificata.
    4. Possiamo quindi creare la nostra variabile di dati $ che restituisce, che contiene il codice JavaScript pronto per l'output.
    5. Abbiamo messo il nostro $ link codificato nel mezzo di tutto questo - pronto per essere tradotto.
    6. Ora che il codice JavaScript è stato aggiunto alla nostra variabile $ data, il resto della funzione apparirà familiare.
    7. Controlliamo se è stato aggiunto un tag del titolo personalizzato e quindi analizziamo i nostri $ extra, proprio come prima. Ancora una volta, otteniamo i nostri tag chiusi ...
    8. ... e restituire i dati.

    Ora possiamo usare la seguente sintassi nel nostro file index.php per visualizzare il nostro link mailto:

     echo mailto ('[email protected] ',' Contattami ');

    Oppure, se abbiamo bisogno di elementi personalizzati, proprio come prima, possiamo aggiungere più variabili:

     $ extras = array ('# special_id', '. special_class', '_ blank'); echo mailto ('[email protected] ',' Contattami ',' Contatta il tuo buon amico Barry. ', $ extra);

    Conclusione

    Questo conclude la nostra prima incursione nelle funzioni di supporto PHP. Questa è la punta dell'iceberg e, la prossima volta, inizieremo a rivedere alcuni strumenti più complessi, nel nome di aiutanti di forma.

    La creazione e la convalida dei moduli deve essere uno dei miei animaletti quando li creo da zero: c'è un sacco di codice ripetitivo, scrittura scrupolosa e possibilità di errori. Una serie di funzioni che generano moduli strutturati correttamente e controllano i dati del post per indirizzi email, password, lunghezza delle stringhe, ecc. Validi possono essere un vero salvavita. Ah, sì, la creazione di moduli html da zero non deve essere così degna di lode come pensavate in precedenza.

    Se hai altre idee su cosa sarebbe davvero utile vedere in una funzione helper PHP, assicurati di commentare le tue idee!