Som en CodeIgniter utvikler, noen ganger ender du opp i en situasjon som krever at du endrer kjernen i rammen eller gjennomføringsflyten for å oppfylle dine egendefinerte krav. Selvfølgelig anbefales det aldri å endre kjernefilene da det gjør oppgraderingsprosessen besværlig. Heldigvis kommer CodeIgniter-rammen med kroker-systemet, som lar deg håndtere dette scenariet.
I denne artikkelen starter vi med en introduksjon til krokene i CodeIgniter-rammeverket. Deretter diskuterer vi de forskjellige typer kroker som er tilgjengelige. Og til slutt tar vi denne muligheten til å utforske etableringen av tilpassede kroker.
La oss ta en rask titt på hva den offisielle CodeIgniter-dokumentasjonen sier om kroker-systemet:
CodeIgniter's Hooks-funksjonen gir et middel til å tappe inn og endre rammens indre arbeid uten hacking av kjernefiler.
Høres ganske selvforklarende, ikke sant? I din daglige applikasjonsutvikling, hvis du noen gang finner deg fristet til å endre kjernen CodeIgniter-filer, bør du først vurdere kroksystemet for å se om det oppfyller dine krav.
La oss anta at du vil bygge et tilpasset ytelses-referansesystem for å overvåke programgjennomføringen. Du skjønner at kjernefilene må modifiseres for å oppnå ønsket utgang. I så fall kan du bruke pre_system
og post_system
kroker for å komme inn i utførelsen og samle statistikken etter behov.
Hvis du er klar over hendelsesobservasjonsmønsteret, er konseptet likt ved at du lytter etter de systemgenererte hendelsene, og den tilsvarende observatørkoden blir utført når den observerte hendelsen utløses.
Så det var en grunnleggende introduksjon til krokene i CodeIgniter. I neste avsnitt vil vi se nærmere på de forskjellige krokene som er tilgjengelige for at du skal plugge inn i systemet.
CodeIgniter krok systemet gir forskjellige krok punkter som du kan bruke mens du implementerer dine egendefinerte kroker. Krokpunktet er i utgangspunktet en viss tilstand i forespørselseksjonsflyten på et gitt tidspunkt.
For eksempel når du implementerer pre_system
krok, du vet at du er i begynnelsen av bootstrapping-fasen. På den annen side, hvis du har valgt post_system
krok, du kan være sikker på at kjøringen er fullført og svaret allerede er sendt til klienten.
I denne delen går vi gjennom de forskjellige krokpunktene som er gitt av CodeIgniter krok systemet.
De pre_system
og post_system
kroker faller under denne kategorien som den tidligere kalles veldig tidlig under bootstrapping-fasen, mens den sistnevnte kalles etter at sidens utførelse er fullført.
Jeg kan tenke på noen brukssaker som kunne oppnås med systemkroker:
Det er tre kroker som faller under denne kategorien, så la oss gå gjennom hver av dem.
De pre_controller
krok kalles like før kontrollerklassen blir instantiated. Så, hvis du ønsker å gjøre ytterligere kontroller før kontrolleren blir kalt, er dette kroken du leter etter.
Som navnet antyder, den post_controller_constructor
krok kalles umiddelbart etter at kontrolleren objektet er instantiated og før den faktiske metoden ringe.
På dette tidspunktet er du sikker på at kontrolleren er instansiert og metoden kommer til å bli kalt snart, slik at du kan laste inn noen kontrollerespesifikke biblioteker her, eller du kan også implementere den regulator-spesifikke egendefinerte valideringen.
De post_controller
krok kalles etter utførelsen av kontrolleren metoden. Så ting som du vil utføre etter utførelse av kontrolleren, skal implementeres med denne kroken.
Så det var historien om de kontrollerende spesifikke krokene.
I henhold til CodeIgniter dokumentasjonen, display_override
krok overstyrer kjernen _vise
metode. Kjernen _vise
Metoden brukes til å sende utdata til klienten, og dermed ved å bruke display_override
koble deg kan endre måten utgangen sendes til brukeren.
Faktisk vil vi utforske denne kroken i detalj når vi går videre til neste avsnitt, hvor vi diskuterer hvordan du lager en tilpasset krok.
De cache_override
krok overstyrer kjernen _display_cache
metode av Produksjon
klasse. De _display_cache
Metoden er ansvarlig for å betjene den cachede utgangen, slik at du kan bruke denne kroken hvis du ønsker å betjene sideutgangen fra den forskjellige bufret posisjonen bare hvis du har implementert en annen cachemekanisme.
Det avsluttes historien om forskjellige krokpunkter i CodeIgniter krok systemet. I neste avsnitt ser vi hvordan du egentlig kunne dra nytte av kroksystemet ved å implementere et ekteeksempel.
Jeg er sikker på at du har hatt nok teori så langt, så la oss komme tilbake til noen praktisk utvikling! I denne delen skal vi lage en tilpasset krok for å demonstrere konseptene som er diskutert så langt i denne artikkelen.
I vårt tilfelle bruker vi display_override
krok som vil være ansvarlig for token erstatning. For å være mer presis erstatter vi alle forekomster av [DATO TID]
med nåværende dato. Selvfølgelig høres det ut som en ganske enkel brukstilstand, men du kan enkelt utvide den til å være mer spesifikk som per dine krav.
Kaksystemet er som standard deaktivert i kjernerammen, så det første du må gjøre er å aktivere kroksystemet.
Gå videre og åpne konfigurasjonsfilen application / konfig / config.php
.
Se etter følgende utdrag og slå den på ved å endre FALSK
til EKTE
.
Nå er vi klare til å definere våre kroker. Faktisk kommer CodeIgniter allerede med filen
application / konfig / hooks.php
som du kan bruke bør du ønske å definere kroker.Som standard er
hooks.php
filen er tom, så la oss legge til vår egendefinerte krok kode for å gjøre det mer meningsfylt.'ReplaceToken', 'function' => 'replacePlaceholderCode', 'filnavn' => 'ReplaceToken.php', 'filepath' => 'kroker');Syntaxen for å definere en tilpasset krok er ganske enkel. Det er
$ krok
array som inneholder alle kroker som må utføres.Nøkkelen til hver oppføring er navnet på kroken selv du definerer. Når du definerer en krok, forteller du systemet for å utføre et bestemt stykke kode når noe skjer. Det er akkurat det som må leveres som en verdi av en hvilken som helst krok. La oss gå gjennom hver nøkkel raskt.
klasse
nøkkelen inneholder navnet på en klasse som inneholder koden som må utføres.funksjon
nøkkel innehar navnet på metoden som vil bli kalt på krokutførelsen.filnavn
nøkkelpunkter til filen som definerer hele krokoden.filepath
definerer katalogbanen til filen deklarert under filnavn
nøkkel, og det er i forhold til applikasjon
katalogen. Vanligvis er det satt til kroker
, dermed resulterer i en application / kroker
struktur. Selvfølgelig er det ingenting som hindrer deg fra å definere en helt annen vei hvis du ønsker å gjøre det.Som en side notat, hvis du ikke vil lage en klassefil, kan du også levere en lukkingsfunksjon som vil bli utført når kroken utløses.
I vårt tilfelle lager vi en fil ReplaceToken.php
og i henhold til krokdefinisjonen må den plasseres under application / kroker
katalog.
Gå videre og lag en fil application / kroker / ReplaceToken.php
med følgende innhold.
CI = & get_instance (); // få den faktiske utgangen $ contents = $ this-> CI-> output-> get_output (); // erstatte tokens $ this-> CI-> load-> hjelper ('date'); $ content = str_replace ("[DATETIME]", standard_date (), $ innhold); // angi output echo $ innholdet; komme tilbake;
Hensikten med vår krok er å erstatte [DATO TID]
stedholder med den faktiske datoen før utgangen av en side i vår søknad sendes til klienten.
Som vi har diskutert tidligere, er produksjonen av siden allerede bygget etter den tiden den display_override
krok kalles. Så det første vi ønsker å gjøre er å hente utgangen som er klar til å bli sendt til brukeren.
// last forekomsten $ this-> CI = & get_instance (); // få den faktiske utgangen $ contents = $ this-> CI-> output-> get_output ();
De get_instance
Metoden brukes til å instantiere applikasjonsinstansen, og den er tildelt $ Dette-> CI
. Deretter bruker vi get_output
metode av Produksjon
klassen for å hente responsinnholdet.
Resten er ganske enkel. De [DATO TID]
stedholder må byttes ut med den aktuelle datoen. For å gjøre tingene enklere, vil Dato
Helper brukes til å utføre den ønskede operasjonen, og vi er nesten ferdige så langt som vår kroklogikk er opptatt av.
// erstatte tokens $ this-> CI-> load-> hjelper ('date'); $ content = str_replace ("[DATETIME]", standard_date (), $ innhold);
Til slutt må du ekko utdataene som display_override
overstyrer _vise
metode som brukes til å sende utdata til klienten. Så vi må gjøre det selv i dette tilfellet; ellers ville det vært blitt håndtert av kjernen _vise
metode.
// angi output echo $ innholdet; komme tilbake;
Faktisk slutter historien om vår tilpassede krok!
Nå, la oss gå videre og lage en ny CodeIgniter-side slik at vi kan teste vår tilpassede krok. Opprett en kontrollerfil application / kontrollere / TokenExample.php
med følgende innhold.
last> vis ( 'token_content');
Og her er hvordan den tilknyttede visningsfilen application / visninger / token_content.php
bør se.
Dagens dato: [DATETIME]
Og det er ganske mye det. Pek nettleseren din til http: // your-code-igniter-site-url / TokenExample / indeksen og du bør se forventet utgang!
Så det er kroksystemet til din disposisjon hvis du ønsker å komme inn i den typiske arbeidsflyten i CodeIgniter applikasjonen. Jeg håper at du har hatt glede av artikkelen, og at den hjelper deg i din daglige CodeIgniter applikasjonsutvikling.
I dag gikk vi gjennom en av de spennende innebygde CodeIgniter-funksjonskrokene. Kroker gir deg mulighet til å gripe inn i den typiske forespørselseksjonsflyten i CodeIgniter-programmet.
I begynnelsen av artikkelen diskuterte vi det grunnleggende konseptet med kroker i CodeIgniter, og deretter diskuterte vi de forskjellige kroker som er tilgjengelige i systemet. Til slutt, i det siste avsnittet, undersøkte vi hvordan man skaper en tilpasset krok og dens indre arbeid.
Ikke nøl med å uttrykke dine tanker ved å bruke feedet under. Også, hvis du vil at jeg skal komme opp med bestemte emner, vennligst bare gi meg beskjed.