|
Dette er en overbygning på "Events i ASP", som tager skridtet videre og pakker tingene pænere ind. Hvis du ikke har læst artiklen om events - og callbacks i ASP, kan jeg da anbefale at kigge på dem først (selvom det ikke er noget krav for at forstå denne artikel). Tidligere havde vi et sæt funktioner som satte events op via nogle offentligt tilgængelige kommaseparerede strenge. Dette er ikke særlig hensigtsmæssigt af flere årsager, så derfor vil jeg forsøge, at få teknikken omkring måden, hvorpå eventhandlers bliver håndteret, pakket lidt mere forsvarligt ind. Til dette formål vil jeg benytte klasser. Jeg har oprettet en klasse som hedder CEventHook, hvor man kan tilmelde og afmelde en eventhandler, samt rejse et event. Klassen kommer til at se således ud: class CEventHook Der er ikke ændret noget på hvordan eventhandlers opbevares, men det er dejligt indkapslet og fuldstændig ligegyldigt for brugeren af et CEventHook, hvordan dette foregår, bare eventet bliver kaldt som det skal! Det vi kan med denne klasse er f.eks. set evBefore = new CEventHook altså opret et objekt af klassen CEventHook og tilmeld en eventhandler ved navn "min_eventhandler" og "kast" eventet, dvs. udfør alle de tilmeldte eventhandlers. Den aktuelle implementering kalder eventhandleren med netop en parameter, derfor forventes eventhandleren at implementere netop en parameter i sin definition. En eventhandler skal altså altid tage netop en parameter, således: sub min_eventhandler(obj) Dette kan så anvendes til at sende oplysninger om den "kastende" funktions tilstand eller til opsamling af parametre fra eventhandleren til den "kastende" funktion. En eventparameter-klasse kunne se således ud (men ikke nødvendigvis bundet til at se således ud): class CEventParam Hvor det så kunne være det objekt, hvorfra eventet bliver "kastet" der refereres til i "sender"-egenskaben. Da det typisk er objekter man forbinder events med, vil jeg give et eksempel på en klasse, der implementerer dette event-system. Så kan du se hvordan jeg har tænkt det skulle fungere i praksis. Eksemplet er ikke specielt genialt og gennemtænkt, det er blot for at illustrere teknikken i at benytte events. class CTestEvents sub min_eventhandler(e) Det var idéen! Nu må du selv vurdere om det er værd at spilde serverresurser på, eller om det er lettere på den gammeldags måde... :-) |
| Sidst opdateret: 10-09-2008 19:02:25 |
|
Tilmeld link |
Tilføj Link |
Tilføj Link |
@-begynder Erklæring om beskyttelse af personlige oplysninger |