Öka produktiviteten genom att skapa PHP-hjälparfunktioner

Varje arbetare behöver en bra verktygslåda, och webbutvecklare är inte annorlunda. PHP-hjälparfunktioner är utformade för att påskynda och homogenisera repetitiva uppgifter och göra ditt liv mycket enklare. Denna första handledning förklarar hur man gör länkhjälpmedel som förbättrar dina metoder för att lägga till hyperlänkar och mailto-länkar i dina webbapplikationer.


En introduktion

Ja, det är inget som häftigt, tidsbesparande enheter som gör livet enklare. Det finns många användbara verktyg där ute som kan förbättra ditt arbetsflöde, från CSS-nät och layouter till heltäckande innehållshanteringssystem och ramverk.

Denna handledning kommer dock att dyka in i begreppet PHP-hjälparfunktioner, och hur du kan skriva generella utdrag för din webbplats som du kommer att kunna använda om och om igen. Det här är funktioner som både snabbar och städar upp din kodningsprocess, så att repetitiva uppgifter kan minimeras och du kan spendera mer av din tid att oroa dig för de viktiga sakerna i livet ... som middag.


Hyperlänkhjälpare

En av de vanligaste upprepade uppgifterna som vi befinner oss måste skriva är hyperlänken. Genom att skapa en hjälpfunktion för detta kan vi spara tid när vi behöver skriva en, ta bort eventuella chanser för syntaxfel och se till att koden är lätt att uppdatera om filer flyttas eller om du flyttar en webbplats till en annan domän. För att börja, kommer vi att göra en mycket enkel funktion i en fil som heter helpers.php:

  

Denna lilla baby kan hänvisas till när vi behöver få hela vägen till en fil och kan refereras om och om igen under din webbplatsutveckling. Det här är en mer användbar metod än att bara ringa domänen med metoden $ _SERVER ['HTTP_HOST'] eftersom den inte kommer att ändras om någon har skrivit in domänen med eller utan "www" och fungerar gärna om din webbplats är på en underdomän, till exempel "http: // localhost / my-site".

Det är också otroligt användbart när du flyttar webbplatsen, eftersom alla absoluta banor kommer att referera till den här funktionen, så att ändra domänvariabeln till den nya domänen ändrar alla dina länkar över hela världen, i ett enda slag.


Strömma den koden

Vad vi syftar till att göra nu är att skapa en ny funktion som kallas "ankare" som kommer att mata ut en kompatibel, standard sträng html komplett med en titel. Här är ett exempel på vad vi skulle vilja skriva ut:

 Ny sida

Och här är vad vi verkligen vill skriva:

 echo anchor ('new-page.php', 'New Page');

Så här har vi en PHP-funktion som refereras, vilken har två variabler som skickas tillsammans: en för länken och en för displaytexten. Så nu, fortfarande i vår helpers.php-fil, kan vi börja skriva den nya funktionen:

 funktion ankar ($ länk, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ domain. $ Länk; // 3 $ data = ''; $ data. = $ text; // 4 $ data. = ""; returnera $ data; 
  1. Här ställer vi upp funktionen "ankare" med två passande variabler.
  2. Vi får då domännamnet från funktionen get_domain () som vi redan har skapat
  3. Därefter lägger vi till $ -länkvariabeln som har skickats till funktionen.
  4. Vi börjar då skapa en sträng i en variabel som kallas $ data, och använd variabeln $ text för att dubbla upp som både den synliga texten för webbplatsen och titeln "titel" för länken.

Nu kan vi testa det här. Skapa en ny fil som heter index.php, i samma mapp som denna helpers.php-fil och skriv:

 kräver ( 'helpers.php'); echo anchor ('new-page.php', 'New Page');

Här har vi kopplat de två filerna med funktionen require () och kallade sedan funktionen ankare () och skickar två anpassade variabler med den. Om du testar detta i en webbläsare ser du vårt önskade resultat:

 Ny sida

Gör det flexibelt

Denna enkla funktion kan vara användbar, men kommer utan tvivel att bli försträngande snart nog. Vi måste lägga till tre nya funktioner innan det blir verkligen fantastiskt och flexibelt. För det första ett alternativ att lägga till egna titelkoder; För det andra, för att kunna lägga till CSS-regler och för det tredje en möjlighet att öppna i ett nytt fönster, om det behövs.

Låt oss granska anpassade titeltaggar först. Titel taggar är mycket viktiga för SEO ändamål, och om du inte lägger dem på dina länkar för tillfället rekommenderar jag starkt att det blir en vana från och med nu. Denna funktion kommer att hjälpa dig att göra det - faktiskt eftersom det är mycket lättare att lägga till och om du inte har lagt till en manuellt används en standardkopia av displaytexten istället.

 funktion ankar ($ länk, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ domain. $ Länk; $ data = ''; $ data. = $ text; $ data. = ""; returnera $ data; 

Så här är en modifierad och förbättrad version av vår ankarfunktion ().

  1. Nu har vi lagt till en tredje variabel, $ titel.
  2. Vi kör sedan en check för att se om en anpassad titel tagg har angivits.
  3. Om den har, lägger vi till en del i vår utdata $ datasträng som sätter titeltaggen3.
  4. Om inget har angetts, kommer det att vara standardtiteltagningen till displaytexten, $ text, som tidigare.

Om vi ​​ändrar vårt funktionssamtal i index.php till:

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

Vi kommer att sluta med denna tillfredsställande produktion:

 Ny sida

Styling och Target Options

För att säkerställa att vi fortfarande kan använda den här hjälpen även om vi behöver lägga till anpassade CSS eller målkoder lägger vi nu en del till vår funktion som kommer att läsa en fjärde variabel och mata ut rätt HTML.

Vi behöver den här funktionen för att vara intelligent nog för att se om vi vill lägga in en CSS-klass, ett CSS-ID eller en måltagg, och vi vill också kunna lägga in flera alternativ eller ett enskilt alternativ eller inga alternativ alls. Låt oss först ändra vår ankarfunktion lite:

 funktion ankare ($ länk, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ domain. $ Länk; $ data = ''; $ data. = $ text; $ data. = ""; returnera $ data; 
  1. Först lägger vi till en fjärde bestående variabel som heter "$ extras." Detta kommer att innehålla alla våra extra anpassade alternativ.
  2. Därefter kontrollerar vi om vi passerar en array i denna variabel. Vi använder en array om vi skickar flera extrafunktioner till funktionen, till exempel om vi behöver det att ha ett CSS-ID och en annan CSS-klass för vår länk.
  3. Om det är en matris, kommer vi att gå igenom det och trycka på varje objekt genom en ny funktion som heter "parse_extras." Den här funktionen tar de extra bitarna vi har skrivit in och skapar rätt motsvarande html-utdata.
  4. Om $ extras är en sträng betyder det att vi bara har gått igenom en regel genom; så vi kan köra vår nya funktion parse_extras () på singeln. Användbar is_string () returnerar FALSE om variabeln är tom; så med det här koden, om inget skickas via $ extras, så kommer ingen kod att köras, och den kommer att hoppa över.
  5. Nu behöver vi göra vår nya funktion, parse_extras ():

     funktion parse_extras ($ regel) if ($ rule [0] == "#") // 1 $ id = substr ($ regel, 1, strlen ($ regel)); // 2 $ data = ''; // 3 returnera $ data;  om ($ regel [0] == ".") // 4 $ class = substr ($ regel, 1, strlen ($ regel)); $ data = ''; returnera $ data;  om ($ regel [0] == "_") // 5 $ data = 'target = "'. $ regel. '"'; returnera $ data; 

    Den här funktionen utnyttjar det faktum att alla våra extras kommer att börja med en unik identifierare. Om vi ​​skickar ett CSS-ID börjar det med en hash (#), om vi passerar en CSS-klass börjar den med en period (.), Och om vi passerar ett mål börjar det med ett understreck (_).

    1. Vi kan kolla vad det första tecknet för en sträng är med hjälp av syntaxen $ string [0]. Du kan vara van att använda denna syntax för att hämta det första objektet i en array, men det är också en väldigt hjälpsam och snabb metod för att hitta specifika tecken inom strängar.
    2. Därefter skapar vi en ny variabel, som är vår inmatade $ -regel, med det första tecknet avskuret. Nu när vi har identifierat vad reglerna gäller, behöver vi inte längre det för vår HTML-utskrift. Denna kombination av substr () och strlen () är ett användbart fragment för att hugga det första tecknet av en sträng.
    3. Vi kan nu skapa vår $ data html-utdata sträng, redo att återvända. Denna metod kan nu upprepas - för det första för att $ -regeln är en CSS-klass, och sedan om det är en HTML-måltagg. Det är värt att nämna att vi inte behöver skära av den första karaktären för måltaggen, eftersom html använder föregående underskrift (_), till skillnad från i CSS-reglerna.

    Nu när vi har skapat alla våra nödvändiga funktioner, kan vi återvända till vår index.php-fil och ändra vårt ankare () -samtal.

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

    Här skickar vi ett CSS ID, och vi får en utmatning från:

     Ny sida

    Om vi ​​skulle lägga till en rad extrafunktioner, om du vill att den ska öppnas i ett nytt fönster och ha ett visst ID och en klass (osannolikt men värt att visa bort flexibiliteten!), Skulle vi göra det så här:

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

    Här förbereder vi en array-variabel som heter extras, bara för att hålla koden städad och sedan skicka den tillsammans med funktionen ankare (). Detta kommer att ge följande utmatning:

     Ny sida

    Mailto Links

    Slutligen tar vi en titt på hur man skapar mailto-länkar i dina program. Vi gör en funktion som heter mailto (), vilket kommer att likna ankarfunktionen (), med en stor skillnad: vi kommer att implementera en chiffer på html-utgången så att e-postadressen inte kan krypas av spam- spindlar, och kommer att hålla din kunds e-postadresser säkra.

    Metoden som vi använder för att dölja e-postadressen använder den ganska fantastiska str_rot13 () PHP-funktionen, som helt enkelt tar en sträng och flyttar alla alfabetiska tecken tretton bokstäver tillsammans i alfabetet. Om du någonsin gick till pojkesökare kommer du säkert ihåg att mucka runt med sådana koder och bestämma att du skulle bli spion när du växer upp.

    Chifferet kommer att mata ut vår kod på ett förvrängd sätt och då kan vi använda teckensnittet "motgift" till att dra tecknen tillbaka tretton ställen på alfabetet och återställa sin ursprungliga mening. Men eftersom den här funktionen är klientsidan, verkar "motgift" bara, och texten återgår till sitt normala själv när den visas på en skärm. Spindlar, sökrobotar och spambotter kommer för det mesta inte att få en aning om vad de läser.

    Det är förmodligen värt att nämna att det finns många sätt att dölja mailto länkar, vissa mycket säkrare än detta, lite mindre så. Jag gillar att använda den här metoden och har aldrig sett någon skräppost till någon av mina kunder på grund av den. Det är värt att nämna att JavaScript-metoden själv utvecklades av Christoph Burgdorfer och ser så här ut:

     

    Detta tar den förvrängda strängen "Njrfbzr frperg fcl pbqr" och ändrar alla tecken, så att skärmen på skärmen ser ut som:

     Fantastisk hemlig spionkod

    Men om du granskar källkoden, vilket är vad spindlarna och sökrobotarna ser kommer du inte se något om detta resultat - så är det fortfarande gömt.

    Vi kommer inte titta på insatserna och hur det här JavaScript fungerar, eftersom det här är en PHP-handledning, trots allt. I stället undersöker vi hur vi kan implementera detta i vår nya mailto () -funktion.

     funktion mailto ($ email, $ text, $ title, $ extras) // 1 $ link = 'document.write ("; // 4 $ data. = $ länk; // 5 $ data. ='". ersätt (/ [a-zA-Z] / g, funktion (c) returnera String.fromCharCode ((c<="Z"?90:122)>= (C = c.charCodeAt (0) 13) c:? C-26);)); '; $ data. = '"'; om ($ title) // 6 $ data. = 'title ="'. $ titel. '' '; else $ data. =' title = "'. $ text. $ data. = parse_extras ($ rule); om (is_string ($ extras)) $ data. = parse_extras ($_axtras) $ extras); $ data. = ">"; $ data. = $ text; $ data. = ""; // 7 returnera $ data; // 8

    Så låt oss ta en titt på vad som är annorlunda här.

    1. För det första passerar vi fortfarande fyra variabler till den här funktionen, men för kosmetiska ändamål har vi bytt namn till den första variabeln till $ email.
    2. Nu skapar vi en ny variabel med html-utgången för mailto-länken. Det är värt att notera att vi har lagt till en backslash innan citattecken eftersom den här strängen senare kommer att visas inuti JavaScript-funktionen, och vi måste se till att citattecken inte förväxlar det.
    3. Därefter implementerar vi str_rot13 () -funktionen på $ -länkvariabeln så att den kodas.
    4. Vi kan då skapa vår retur $ data variabel, som innehåller JavaScript redo för utmatning.
    5. Vi lägger vår kodade $ länk mitt i allt detta - redo att översättas.
    6. Nu när JavaScript har lagts till vår $ data variabel kommer resten av funktionen att bli bekant.
    7. Vi kontrollerar om en anpassad titel tagg har lagts till, och vi analyserar våra $ extras, precis som tidigare. Återigen får vi taggarna stängda ...
    8. ... och returnera data.

    Vi kan nu använda följande syntax i vår index.php-fil för att hämta vår mailto länk:

     echo mailto ([email protected] ',' Kontakta mig ');

    Eller, om vi behöver anpassade element, kan vi, precis som tidigare, lägga till fler variabler:

     $ extras = array ('# special_id', 'special_class', '_ blank'); echo mailto ([email protected] "," Kontakta mig "," Kontakta din kära Barry. ", $ extras);

    Slutsats

    Detta avslutar vår första fördjupning i PHP-hjälparfunktioner. Det här är väldigt toppen av isberget, och nästa gång börjar vi granska några mer komplicerade verktyg, i form av formhuggare.

    Form skapande och validering måste vara en av mina pet peeves när de skapas från grunden - det finns mycket repetitiv kod, noggrann skrivning och chanser till fel. En serie funktioner som både matar ut korrekt strukturerade blanketter och kontrollerar postdata för giltiga e-postadresser, lösenord, stränglängd, etc., kan vara en sann livräddare. Åh ja, att skapa html-formulär från början behöver inte vara så groan-värdig som du tidigare trodde.

    Om du har några andra idéer om vad som verkligen skulle vara bra att se i en PHP-hjälparfunktion, var noga med att kommentera dina idéer!