Verhoog de productiviteit door PHP Helper-functies te maken

Elke arbeider heeft een goede toolbox nodig en webontwikkelaars zijn niet anders. PHP-helperfuncties zijn ontworpen om repetitieve taken te versnellen en te homogeniseren en uw leven zoveel gemakkelijker te maken. In deze eerste zelfstudie wordt uitgelegd hoe u link-helpers kunt maken die uw methoden voor het toevoegen van hyperlinks en mailto-koppelingen in uw webtoepassingen zullen verbeteren.


Een introductie

Ja, er is niets zoals geweldige, tijdbesparende apparaten die het leven gemakkelijker maken. Er zijn veel handige tools beschikbaar die uw workflow kunnen verbeteren, van CSS-rasters en lay-outs tot volwaardige content management systemen en frameworks.

Deze zelfstudie gaat echter dieper in op het concept van PHP-helperfuncties en hoe u gegeneraliseerde fragmenten voor uw site kunt schrijven die u steeds opnieuw kunt gebruiken. Dit zijn functies die uw codeerproces versnellen en opschonen, zodat repetitieve taken tot een minimum kunnen worden beperkt en u meer tijd kunt besteden aan zorgen maken over de belangrijke dingen in het leven ... zoals een diner.


Hyperlink-helpers

Een van de meest voorkomende repetitieve taken die we zelf moeten schrijven, is de hyperlink. Door hiervoor een helpfunctie te maken, kunnen we tijd besparen wanneer we er een moeten schrijven, eventuele kansen op syntaxisfouten verwijderen en zorgen dat de code gemakkelijk kan worden bijgewerkt als bestanden worden verplaatst of als u een site naar een andere locatie verplaatst domein. Om te beginnen zullen we een heel eenvoudige functie maken in een bestand met de naam helpers.php:

  

Deze kleine baby kan worden doorverwezen wanneer we het volledige pad naar een bestand nodig hebben en er kan steeds naar worden verwezen tijdens de ontwikkeling van uw site. Dit is een handigere methode dan simpelweg het domein aanroepen met de methode $ _SERVER ['HTTP_HOST'], omdat het niet verandert als iemand het domein heeft ingevoerd met of zonder 'www', en het werkt gelukkig als uw site is ingeschakeld een subdomein, bijvoorbeeld "http: // localhost / mijn-site".

Het is ook ongelooflijk handig bij het verplaatsen van de site, omdat alle absolute paden naar deze enkele functie verwijzen, dus als u de $ domeinvariabele in het nieuwe domein wijzigt, worden al uw links overal in één keer gewijzigd..


Stroomlijn die code

Wat we nu proberen te doen, is het creëren van een nieuwe functie, "anchor" genaamd, die een compatibele standaardreeks html met een titel zal uitvoeren. Hier is een voorbeeld van wat we willen weergeven:

 Nieuwe pagina

En hier is wat we eigenlijk zouden willen typen:

 echo anchor ('nieuwe pagina.php', 'Nieuwe pagina');

Dus hier hebben we een PHP-functie waarnaar wordt verwezen, die twee variabelen heeft die worden doorgegeven: één voor de link en één voor de displaytekst. Dus nu, nog steeds in ons helpers.php-bestand, kunnen we beginnen met het schrijven van de nieuwe functie:

 functie anker ($ link, $ tekst) // 1 $ domain = get_domain (); // 2 $ link = $ domein. $ Koppeling; // 3 $ data = ''; $ data. = $ text; // 4 $ data. = ""; return $ data; 
  1. Hier stellen we de functie "anker" in met twee passerende variabelen.
  2. Vervolgens krijgen we de domeinnaam uit de functie get_domain () die we al hebben gemaakt
  3. Vervolgens voegen we de $ link-variabele toe die naar de functie is verzonden.
  4. Vervolgens beginnen we met het maken van de uitvoerreeks in een variabele met de naam $ data en gebruiken we de $ -tekstvariabele om zowel de zichtbare tekst voor de site als de 'title'-tag voor de link te verdubbelen.

Nu kunnen we dit uittesten. Maak een nieuw bestand met de naam index.php in dezelfde map als dit helpers.php-bestand en typ het volgende:

 require ( 'helpers.php'); echo anchor ('nieuwe pagina.php', 'Nieuwe pagina');

Hier hebben we de twee bestanden verbonden met de require () -functie en vervolgens de anchor () -functie genoemd, waarmee twee aangepaste variabelen worden verzonden. Als u dit in een browser test, ziet u ons gewenste resultaat:

 Nieuwe pagina

Maak het flexibel

Deze eenvoudige functie kan nuttig zijn, maar zal ongetwijfeld snel genoeg versmallen. We moeten drie nieuwe functies toevoegen voordat het echt geweldig en flexibel wordt; ten eerste, een optie om aangepaste title-tags toe te voegen; ten tweede, CSS-regels kunnen toevoegen; en ten derde, een optie om het te openen in een nieuw venster, indien nodig.

Laten we eerst de aangepaste title-tags bekijken. Titellabels zijn erg belangrijk voor SEO-doeleinden en als u ze nu niet op uw links plaatst, raad ik u ten zeerste aan het vanaf nu een gewoonte te maken. Deze functie zal je daartoe dwingen - eigenlijk, omdat het een stuk gemakkelijker toe te voegen is, en als je er nog geen hebt toegevoegd, zal in plaats daarvan een standaardkopie van de displaytekst worden gebruikt.

 functie anker ($ link, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ domein. $ Koppeling; $ data = ''; $ data. = $ text; $ data. = ""; return $ data; 

Dus hier is een aangepaste en verbeterde versie van onze anchor () functie.

  1. Nu hebben we een derde variabele, $ titel, toegevoegd.
  2. We voeren vervolgens een controle uit om te zien of er een aangepast title-tag is ingevoerd.
  3. Als dit het geval is, voegen we een gedeelte toe aan onze $ -reeks voor uitvoer die het title-label instelt3.
  4. Als er niets is ingevoerd, wordt standaard de title-tag gebruikt voor de displaytekst, $ text, zoals eerder.

Als we nu onze functie wijzigen, roep dan index.php in naar:

 echo anchor ('nieuwe pagina.php', 'Nieuwe pagina', 'Aangepaste titelbericht!');

We zullen eindigen met deze bevredigende output:

 Nieuwe pagina

Styling en doelopties

Om er zeker van te zijn dat we deze helper nog steeds kunnen gebruiken, zelfs als we aangepaste CSS- of doeltags moeten toevoegen, voegen we nu een onderdeel toe aan onze functie die een vierde variabele zal lezen en de juiste HTML dienovereenkomstig zal uitvoeren.

We hebben deze functie nodig om intelligent genoeg te zijn om te zien of we een CSS-klasse, een CSS-ID of een doel-tag willen plaatsen en we willen ook meerdere opties kunnen toevoegen, of een enkele optie, of geen opties helemaal niet. Laten we eerst onze ankerfunctie een beetje aanpassen:

 functie anker ($ link, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ domein. $ Koppeling; $ data = ''; $ data. = $ text; $ data. = ""; return $ data; 
  1. Eerst voegen we een vierde doorgevende variabele toe, genaamd '$ extra's'. Dit bevat al onze extra aangepaste opties.
  2. Vervolgens controleren we om te zien of we een array in deze variabele doorgeven. We zullen een array gebruiken als we meerdere extra's aan de functie doorgeven, bijvoorbeeld als we het nodig hebben om een ​​CSS-ID en een andere CSS-klasse te hebben voor onze link.
  3. Als het een array is, zullen we er doorheen lopen en elk item door een nieuwe functie duwen met de naam "parse_extras." Deze functie neemt de extra bits die we hebben ingevoerd en maakt de juiste, bijbehorende html-uitvoer.
  4. Als $ extra's een reeks is, betekent dit dat we maar één regel hebben doorgevoerd; zodat we onze nieuwe functie parse_extras () op het enkele item kunnen uitvoeren. Met opzet retourneert de functie is_string () FALSE als de variabele leeg is; dus met dit stuk code, als er niets wordt doorgegeven door $ extra's, dan zal er geen code worden uitgevoerd en zal deze doorgaan.
  5. Nu moeten we onze nieuwe functie parse_extras () maken:

     function parse_extras ($ rule) if ($ rule [0] == "#") // 1 $ id = substr ($ rule, 1, strlen ($ rule)); // 2 $ data = ''; // 3 retour $ gegevens;  if ($ rule [0] == ".") // 4 $ class = substr ($ rule, 1, strlen ($ rule)); $ data = ''; return $ data;  if ($ rule [0] == "_") // 5 $ data = 'target = "'. $ rule. '"'; return $ data; 

    Deze functie maakt gebruik van het feit dat al onze extra's beginnen met een unieke identificatie. Als we een CSS-ID doorgeven, begint het met een hash (#), als we een CSS-klasse passeren, begint het met een punt (.), En als we een doel voorbijgaan, zal het beginnen met een onderstrepingsteken (_).

    1. We kunnen controleren wat het eerste teken van een tekenreeks is door de syntaxis $ string [0] te gebruiken. U bent misschien gewend aan het gebruik van deze syntaxis om het eerste item in een array op te halen, maar het is ook een zeer nuttige en snelle methode om specifieke tekens binnen strings te vinden.
    2. Vervolgens maken we een nieuwe variabele, die onze ingevoerde $ -regel is, waarbij het eerste teken is afgekapt. Nu we hebben vastgesteld waarvoor de regel is, hebben we deze niet langer nodig voor onze HTML-uitvoer. Deze combinatie van substr () en strlen () is een handig fragment voor het hakken van het eerste teken van een tekenreeks.
    3. We kunnen nu onze $ data html output string maken, klaar om terug te keren. Deze methode kan nu worden herhaald - in de eerste plaats als de $ -regel een CSS-klasse is, en dan als het een html-target-tag is. Het is de moeite waard te vermelden dat we het eerste teken voor de doeltag niet moeten bijsnijden, omdat html het voorafgaande onderstrepingsteken (_) gebruikt, in tegenstelling tot de CSS-regels.

    Nu we al onze noodzakelijke functies hebben gecreëerd, kunnen we terugkeren naar ons index.php-bestand en onze anchor () -aanroep wijzigen.

     echo anchor ('nieuwe pagina.php', 'Nieuwe pagina', 'Aangepaste titelbericht!', '# speciale_link');

    Hier geven we een CSS-ID door en we ontvangen een uitvoer van:

     Nieuwe pagina

    Als we een reeks extra's zouden toevoegen, voor het geval je wilde dat het in een nieuw venster zou openen en een specifieke ID en klasse zou hebben (onwaarschijnlijk, maar de flexibiliteit waard!), Zouden we het als volgt doen:

     $ extras = array ('# special_id', '. special_class', '_ blank'); echo anchor ('nieuwe pagina.php', 'Nieuwe pagina', 'Aangepaste titelbericht!', $ extra's);

    Hier maken we vooraf een arrayvariabele genaamd extra's, gewoon om de code netjes te houden en vervolgens samen met de anchor () -functie te verzenden. Dit zal de volgende output produceren:

     Nieuwe pagina

    Mailto Links

    Ten slotte bekijken we hoe u mailto-links in uw applicaties kunt maken. We zullen een functie maken met de naam mailto (), die vrij veel lijkt op de anchor () functie, met één groot verschil: we zullen een cijfer op de html-output implementeren, zodat het e-mailadres niet kan worden gecrawld door spam- spiders en houden de e-mailadressen van uw klanten veilig.

    De methode die we zullen gebruiken om het e-mailadres te verbergen gebruikt de nogal ontzagwekkende str_rot13 () PHP-functie, die eenvoudigweg een tekenreeks neemt en alle letters uit het alfabet dertien letters verplaatst. Als je ooit naar padvinders bent gegaan, herinner je je waarschijnlijk dat je met zulke codes rondloopt en besluit dat je waarschijnlijk een spion bent als je ouder wordt.

    Het cijfer geeft onze code op een onleesbare manier weer en vervolgens kunnen we met behulp van een JavaScript-functie 'tegengif' de tekens dertien plaatsen in het alfabet terugtrekken en de oorspronkelijke betekenis ervan herstellen. Aangezien deze functie echter aan de clientzijde is, worden de acties 'tegengif' alleen uitgevoerd en keert de tekst terug naar zijn normale zelf wanneer deze op een scherm wordt weergegeven. Spinnen, crawlers en spambots zullen dus voor het grootste deel geen idee hebben wat ze lezen.

    Het is waarschijnlijk het vermelden waard dat er vele methoden zijn om mailto-links te verbergen, sommige veel veiliger dan dit, andere minder. Ik vind het leuk om deze methode te gebruiken, en ik heb nog nooit spam gezien voor een van mijn klanten. Vermeldenswaard is ook dat de JavaScript-methode zelf is ontwikkeld door Christoph Burgdorfer en ziet er als volgt uit:

     

    Dit neemt de verminkte string "Njrfbzr frperg fcl pbqr" en verplaatst alle karakters, zodat het scherm op uw scherm er als volgt uitziet:

     Geweldige geheime spioncode

    Als u echter de broncode bekijkt, wat de spiders en crawlers zullen zien, zult u geen melding van dit resultaat zien - het blijft dus verborgen.

    We zullen niet kijken naar de details van hoe dit JavaScript werkt, want dit is tenslotte een PHP-tutorial. In plaats daarvan zullen we onderzoeken hoe we dit kunnen implementeren in onze nieuwe mailto () -functie.

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

    Laten we daarom eens kijken naar wat hier anders is.

    1. Ten eerste gaan we nog steeds vier variabelen door naar deze functie, hoewel we voor cosmetische doeleinden de eerste variabele hebben hernoemd naar $ email.
    2. Nu maken we een nieuwe variabele met de HTML-uitvoer voor de mailto-koppeling. Het is vermeldenswaard dat we een backslash hebben toegevoegd vóór de aanhalingstekens, omdat deze reeks later in de JavaScript-functie wordt weergegeven, en we moeten ervoor zorgen dat de aanhalingstekens het niet verwarren.
    3. Vervolgens implementeren we de functie str_rot13 () op de $ link-variabele, zodat deze is gecodeerd.
    4. We kunnen vervolgens onze terugkerende $ data-variabele maken, die de JavaScript-klaar voor uitvoer bevat.
    5. We plaatsen onze gecodeerde $ link in het midden van dit alles - klaar om te worden vertaald.
    6. Nu JavaScript aan onze $ data-variabele is toegevoegd, ziet de rest van de functie er bekend uit.
    7. We controleren of er een aangepaste titeltag is toegevoegd en vervolgens analyseren we onze $ extra's, net als eerder. Nogmaals, we krijgen onze tags gesloten ...
    8. ... en de gegevens retourneren.

    We kunnen nu de volgende syntaxis gebruiken in ons index.php-bestand om onze mailto-link te openen:

     echo mailto ('[email protected] ',' Contact Me ');

    Of, als we aangepaste elementen nodig hebben, kunnen we nog meer variabelen toevoegen:

     $ extras = array ('# special_id', '. special_class', '_ blank'); echo mailto ('[email protected] ',' Contacteer mij ',' Neem contact op met je goede vriend Barry. ', $ extra's);

    Conclusie

    Dit is onze eerste kennismaking met PHP-helperfuncties. Dit is heel erg het topje van de ijsberg, en de volgende keer zullen we beginnen met het herzien van wat meer complexe tools, in de naam van vormhelpers.

    Formuliercreatie en -validatie moet een van mijn grootste huisdieren zijn wanneer ik ze vanuit het niets creëer - er is veel herhalende code, nauwgezet schrijven en kans op fouten. Een reeks functies die zowel correct gestructureerde formulieren uitvoeren als de postgegevens controleren op geldige e-mailadressen, wachtwoorden, tekenreeksen enzovoort, kan een echte redder in nood zijn. Ah ja, het creëren van html-formulieren vanuit het niets hoeft niet zo klagen als je eerder dacht.

    Als je nog andere ideeën hebt over wat echt nuttig zou zijn om te zien in een PHP-helperfunctie, zorg dan dat je je ideeën becommentarieert!