Hver arbeidsmann trenger en god verktøykasse, og webutviklere er ikke forskjellige. PHP hjelperfunksjoner er utviklet for å øke hastigheten og homogenisere gjentatte oppgaver, og gjøre livet ditt så mye lettere. Denne første opplæringen forklarer hvordan du lager linkhjelpere som vil forbedre metodene dine for å legge til hyperkoblinger og mailto-koblinger i webapplikasjonene dine.
Ja, det er ingenting som fantastisk, tidsbesparende enheter som gjør livet enklere. Det er mange nyttige verktøy der ute som kan forbedre arbeidsflyten din, fra CSS-grensesnitt og oppsett til fullverdige innholdsstyringssystemer og rammer.
Denne opplæringen kommer imidlertid til å dykke inn i konseptet med PHP-hjelperfunksjoner, og hvordan du kan skrive generelle utdrag for nettstedet ditt som du vil kunne bruke igjen og igjen. Dette er funksjoner som både raskere og rydde opp kodingsprosessen, slik at gjentatte oppgaver kan minimeres, og du kan bruke mer tid på å bekymre deg om viktige ting i livet ... som middag.
En av de vanligste gjentatte oppgavene vi finner oss å måtte skrive er hyperkoblingen. Ved å skape en hjelpefunksjon for dette, kan vi spare tid når vi trenger å skrive en, fjerne eventuelle sjanser for syntaksfeil, og sørg for at koden er lett å oppdatere hvis filer flyttes, eller hvis du flytter et nettsted til et annet domene. For å begynne, vil vi gjøre en veldig enkel funksjon i en fil som heter helpers.php:
Denne lille babyen kan henvises til når vi trenger å få hele banen til en fil, og kan henvises om og om igjen i løpet av nettstedet ditt. Dette er en mer nyttig metode enn å bare ringe domenet med $ _SERVER ['HTTP_HOST'] -metoden, fordi det ikke vil endre seg hvis noen har skrevet inn domenet med eller uten "www" og fungerer lykkelig hvis nettstedet ditt er på et underdomene, for eksempel "http: // localhost / my-site".
Det er også utrolig nyttig når du flytter siden, fordi alle absolutte baner vil referere til denne enkeltfunksjonen, slik at endringen av $ domain-variabelen til det nye domenet vil endre alle koblingene over hele landet, i ett enkelt swoop.
Streamline den koden
Det vi skal sikte på å gjøre nå, er å skape en ny funksjon kalt "anker" som vil sende ut en kompatibel, standard streng av html, komplett med en tittel. Her er et eksempel på hva vi ønsker å sende ut:
Ny sideOg her er det vi faktisk ønsker å skrive:
ekkoanker ('new-page.php', 'New Page');Så her har vi en PHP-funksjon som refereres, som har to variabler som sendes sammen: en for linken og en for displayteksten. Så nå, fortsatt i vår helpers.php-fil, kan vi begynne å skrive den nye funksjonen:
funksjon anker ($ link, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ domain. $ Link; // 3 $ data = ''; $ data. = $ tekst; // 4 $ data. = ""; returner $ data;
- Her setter vi opp funksjonen "anker" med to passerende variabler.
- Vi får domenenavnet fra funksjonen get_domain () som vi allerede har opprettet
- Deretter legger vi til $ -linkvariabelen som har blitt sendt til funksjonen.
- Vi begynner da å lage utdatastrengen i en variabel som kalles $ data, og bruk $ tekstvariabelen til å doble opp som både den synlige teksten for nettstedet, samt tittelen "tittel" for linken.
Nå kan vi teste dette ut. Opprett en ny fil kalt index.php, i samme mappe som denne helpers.php filen, og skriv:
kreve ( 'helpers.php'); ekkoanker ('new-page.php', 'New Page');Her har vi koblet de to filene med require () -funksjonen, og deretter kalt anker () -funksjonen, og sender to tilpassede variabler med den. Hvis du tester dette i en nettleser, ser du ønsket resultat:
Ny side
Gjør det fleksibelt
Denne enkle funksjonen kan være nyttig, men vil uten tvil bli sammenbrudd snart nok. Vi må legge til tre nye funksjoner før det blir virkelig fantastisk og fleksibelt; For det første, et alternativ å legge til egendefinerte tittelkoder; For det andre, for å kunne legge til CSS-regler og for det tredje, et alternativ for det å åpne i et nytt vindu, om nødvendig.
La oss se på tilpassede tittelkoder først. Titteletiketter er svært viktige for SEO-formål, og hvis du ikke legger dem på koblingene dine for øyeblikket, anbefaler jeg sterkt at det blir en vane fra nå av. Denne funksjonen vil hjelpe deg til å gjøre det - faktisk, da det er mye enklere å legge til, og hvis du ikke har lagt til en manuelt, vil en standardkopi av displayteksten bli brukt i stedet.
funksjon anker ($ link, $ tekst, $ title) // 1 $ domain = get_domain (); $ link = $ domain. $ Link; $ data = ''; $ data. = $ tekst; $ data. = ""; returner $ data;Så her er en endret og forbedret versjon av vår ankerfunksjon ().
- Nå har vi lagt til en tredje variabel, $ tittel.
- Vi kjører deretter en sjekk for å se om en egendefinert tittelkode er angitt.
- Hvis den har, legger vi til en del i vår utdata $ datastreng som setter titteletiketten3.
- Hvis ingenting er oppgitt, vil det bli standard titteletiketten til displayteksten, $ tekst, som den var før.
Nå, hvis vi endrer vårt funksjonsanrop i index.php til:
ekkoanker ('new-page.php', 'New Page', 'Custom Title Message!');Vi vil ende opp med denne tilfredsstillende produksjonen:
Ny side
Styling og Target Options
For å sikre at vi fortsatt kan bruke denne hjelpen, selv om vi må legge til egendefinerte CSS- eller målrettingsskilt, legger vi nå en del til vår funksjon som vil lese en fjerde variabel, og utdata riktig HTML tilsvarende.
Vi trenger denne funksjonen for å være intelligent nok til å se om vi ønsker å sette inn en CSS-klasse, et CSS-ID eller en målmerke, og vi vil også kunne sette inn flere alternativer, eller et enkelt alternativ eller ingen alternativer i det hele tatt. Først, la oss endre vår ankerfunksjon litt:
funksjon anker ($ link, $ tekst, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ domain. $ Link; $ data = ''; $ data. = $ tekst; $ data. = ""; returner $ data;
- Først opp, legger vi til en fjerde bestått variabel, kalt "$ extras." Dette vil inneholde alle våre ekstra tilpassede alternativer.
- Deretter sjekker vi for å se om vi overfører en matrise i denne variabelen. Vi vil bruke en matrise hvis vi overfører flere statister til funksjonen, for eksempel hvis vi trenger det for å ha et CSS ID og en annen CSS klasse for vår lenke.
- Hvis det er en matrise, vil vi gå gjennom det, og skyve hvert element gjennom en ny funksjon kalt "parse_extras." Denne funksjonen tar de ekstra brikkene vi har skrevet inn, og lager den riktige, tilsvarende html-utgangen.
- Hvis $ ekstramateriale er en streng, betyr det at vi kun har bestått en regel gjennom; så vi kan kjøre vår nye funksjon parse_extras () på det enkelte elementet. Funksjonen er is_string () returnerer FALSE hvis variabelen er tom; så med dette stykke kode, hvis ingenting blir sendt gjennom $ ekstramateriale, vil ingen kode bli kjørt, og den vil hoppe over.
Nå må vi gjøre vår nye funksjon, parse_extras ():
funksjon parse_extras ($ regel) if ($ rule [0] == "#") // 1 $ id = substr ($ regel, 1, strlen ($ regel)); // 2 $ data = ''; // 3 returnere $ data; hvis ($ regel [0] == ".") // 4 $ class = substr ($ regel, 1, strlen ($ regel)); $ data = ''; returner $ data; hvis ($ regel [0] == "_") // 5 $ data = 'target = "'. $ regel. '"'; returner $ data;Denne funksjonen gjør bruk av det faktum at alle våre statister starter med en unik identifikator. Hvis vi sender en CSS ID, begynner den med en hash (#), hvis vi passerer en CSS-klasse, begynner den med en periode (.), Og hvis vi overfører et mål, starter det med et understreke (_).
- Vi kan sjekke hva det første tegnet av en streng er ved å bruke syntaks $ string [0]. Du kan være vant til å bruke denne syntaksen for å hente det første elementet i en matrise, men det er også en veldig nyttig og rask metode for å finne bestemte tegn i strenger.
- Deretter oppretter vi en ny variabel, som er vår innputtede $ -regel, med det første tegnet hakket av. Nå som vi har identifisert hva regelen er for, trenger vi ikke lenger det for vår HTML-utgang. Denne kombinasjonen av substr () og strlen () er en nyttig utdrag for å kutte det første tegnet av en streng.
- Vi kan nå lage vår $ data html-utgangsstreng, klar til å returnere. Denne metoden kan nå gjentas - for det første for at $ regelen er en CSS-klasse, og deretter om det er en HTML-målmerke. Det er verdt å nevne at vi ikke trenger å beskjære av det første tegnet for målmerket, da html bruker den forrige underskriften (_), i motsetning til CSS-reglene.
Nå som vi har opprettet alle våre nødvendige funksjoner, kan vi gå tilbake til vår index.php-fil og endre ankeret vårt.
ekkoanker ('new-page.php', 'New Page', 'Custom Tittel Message!', '# special_link');Her sender vi et CSS ID, og vi mottar en utgang fra:
Ny sideHvis vi skulle legge til en rekke ekstraelementer, hvis du ville at den skulle åpne i et nytt vindu og ha en bestemt ID og klasse (usannsynlig, men verdt å vise fleksibiliteten!), Ville vi gjøre det slik:
$ extras = array ('# special_id', 'special_class', '_ blank'); ekkoanker ('new-page.php', 'New Page', 'Custom Title Message!', $ extras);Her forbereder vi en array-variabel som kalles ekstramateriale, bare for å holde koden ryddig, og deretter sende den sammen med ankerfunksjonen (). Dette vil produsere følgende utgang:
Ny side
Mailto Links
Til slutt vil vi se på hvordan du oppretter mailto-koblinger i dine applikasjoner. Vi vil lage en funksjon som kalles mailto () som vil være ganske lik ankerfunksjonen (), med en stor forskjell: Vi vil implementere en kryptering på html-utgangen, slik at e-postadressen ikke kan gjennomsøkes av spam- edderkopper, og vil holde kundens e-postadresser sikre.
Metoden vi bruker for å skjule e-postadressen, bruker den ganske fantastiske str_rot13 () PHP-funksjonen, som bare tar en streng og flytter alle alfabetiske tegn tretten bokstaver sammen i alfabetet. Hvis du noen gang har gått til guttenes scouter, husker du sannsynligvis at du muker rundt med slike koder, og du bestemmer deg for å bli spion når du vokser opp.
Krypteringen vil utgjøre koden vår på en forvrengt måte, og ved å bruke en "antidote" -funksjon, kan vi trekke tegnene tilbake tretten steder på alfabetet og gjenopprette deres opprinnelige betydning. Men siden denne funksjonen er klientsiden, er "motgift" bare handlinger, og teksten vender tilbake til sitt normale selv når det vises på en skjerm. Dermed vil edderkopper, crawlere og spambots for det meste ikke ha en anelse om hva de leser.
Det er nok verdt å nevne at det er mange metoder for å skjule mailto linker, noen mye mer sikre enn dette, noen mindre. Jeg liker å bruke denne metoden, og har aldri sett noen spam komme til noen av mine klienter på grunn av den. Det er verdt å nevne at JavaScript-metoden selv ble utviklet av Christoph Burgdorfer, og ser slik ut:
Dette tar den ødelagte snoren "Njrfbzr frperg fcl pbqr" og skifter alle tegnene, slik at skjermen på skjermen ser ut som:
Fantastisk hemmelig spionkodeMen hvis du vurderer kildekoden, som det er hva edderkoppene og crawlere vil se, vil du ikke se noe om dette resultatet - det forblir derfor skjult.
Vi vil ikke se på inn og ut av hvordan dette JavaScript fungerer, da dette er en PHP-opplæring, tross alt. I stedet skal vi undersøke hvordan vi kan implementere dette i vår nye mailto () -funksjon.
funksjon mailto ($ email, $ text, $ title, $ extras) // 1 $ link = 'document.write (' '; // 4 $ data. = $ link; // 5 $ data. =' ". erstatt (/ [a-zA-Z] / g, funksjon (c) return String.fromCharCode ((c<="Z"?90:122)>= (C = c.charCodeAt (0) 13) c:? C-26);)); '; $ data. = '"'; if ($ title) // 6 $ data. = 'title ="'. $ tittel. '' '; else $ data. =' title = "'. $ tekst. $ data. = parse_extras ($ rule); hvis (is_string ($ extras)) $ data. = parse_extras ($ extras) $ extras); $ data. = ">"; $ data. = $ tekst; $ data. = ""; // 7 returnere $ data; // 8Så la oss se på hva som er annerledes her.
- For det første overfører vi fortsatt fire variabler til denne funksjonen, men for kosmetiske formål har vi omdøpt den første variabelen til $ email.
- Nå lager vi en ny variabel med html-utgangen for mailto-lenken. Det er verdt å merke seg at vi har lagt til et tilbakeslag før anførselstegnene, siden denne strengen senere vises i JavaScript-funksjonen, og vi må sørge for at citeringsmerket ikke forveksler det.
- Deretter implementerer vi str_rot13 () -funksjonen på $ link-variabelen, slik at den er kodet.
- Vi kan da lage vår retur $ data variabel, som inneholder JavaScript klar for utmatning.
- Vi setter vår kodede $ link midt i alt dette - klar til å bli oversatt.
- Nå som JavaScript er lagt til i vår $ data-variabel, vil resten av funksjonen bli kjent.
- Vi kontrollerer for å se om en egendefinert tittelkode er lagt til, og så analyserer vi våre $ ekstramateriale, som tidligere. Nok en gang får vi våre koder lukket ...
- ... og returnere dataene.
Vi kan nå bruke følgende syntaks i vår index.php-fil for å hente vår mailto link:
ekko mailto ([email protected] ',' Kontakt meg ');Eller, hvis vi trenger egendefinerte elementer, kan vi, som tidligere, legge til flere variabler:
$ extras = array ('# special_id', 'special_class', '_ blank'); ekko mailto ([email protected] ',' Kontakt meg ',' Kontakt din gode venn Barry. ', $ extras);
Konklusjon
Dette avslutter vår første foray i PHP-hjelperfunksjoner. Dette er veldig mye toppen av isfjellet, og neste gang begynner vi å gjennomgå noen mer komplekse verktøy, i form av formhjelpere.
Skjemaoppretting og validering må være en av mine kjære når jeg lager dem fra bunnen av. Det er mye repeterende kode, omhyggelig skriving og sjansene for feil. En rekke funksjoner som både utfører riktig strukturerte skjemaer og sjekker postdataene for gyldige e-postadresser, passord, strenglengde osv., Kan være en sann livredder. Åh ja, å lage html-skjemaer fra grunnen trenger ikke være så stønnverdig som du tidligere trodde.
Hvis du har noen andre ideer om hva som ville være veldig nyttig å se i en PHP-hjelperfunksjon, må du huske å kommentere dine ideer!