|
Man kan fra VBScript 5.0, lave sine egne klasser, hvilket betyder at man i ASP 3.0 også kan benytte denne feature. Klasser har flere fordele, dels indkapsler de funktionalitet, dels følger der nogle features med når man arbejder med klasser. For lige at tage den sidste pointe først, så kan man f.eks. benytte klassens evne til at kalde en funktion når den nedlægges, til at rydde op i de resurser den har fat i. En resurse som ofte benyttes på dynamiske websites og som er kritisk at få frigivet er forbindelser til databaser. Dette kan f.eks. klares således: class database Hvis man så skulle komme for skade at efterlade db.conn åben inden man sætter db til nothing, så klarer klassen selv at lukke forbindelsen inden objektet bliver nedlagt. På denne måde kan man i princippet også efterlade db-objektet (lade det gå ud af scope) og blot lade det nedlægge sig selv og i den forbindelse lukke for forbindelsen til databasen. Det er dog ikke en strategi jeg anbefaler, men det kan måske redde en ellers brav kodekarl fra problemer med databaseforbindelser som "hænger" og evt. låser databasen... Ud over at hjælpe til med oprydning, så hjælper klassen også for pakke logikken omkring en funktionalitet ind, så det ikke forplumrer koden på andre sider. I ovenstående tilfælde er der tale om logik til at skabe forbindelse til en databasen, men det kunne ligeså godt have været logik til at arbejde med oplysninger om en bruger, herunder læse, skrive, slette osv. en brugers oplysninger. I sådan et tilfælde, kunne man have et regelsæt for om - og hvornår - en given bruger måtte benytte forskellige sider eller elementer af et site. Disse regler kunne implementeres i klassen uden at andre skulle bekymre sig om hvordan, men bare skulle forholde sig til OM en bruger havde adgang til et område af sitet. Dette er eksemplificeret (og simplificeret nedenfor): class bruger Nu er ovenstående klasse en meget simpel udgave af adgangskontrol, men princippet kan sagtens udbygges til at omfatte opslag i en database eller lignende, således den bliver meget dynamisk og omfattende rent funktionelt. Klassen kunne så benyttes på en side som følger (med udgangspunkt i at session("id") indeholder den aktuelle brugers id): <% Man kunne endda lave en funktion på objektet som tog udgangspunkt i det aktuelle scriptnavn: class bruger Denne nye metode skal så kaldes som i forrige eksempel, men denne gang er parameteren ikke nødvendigt (den logik er pakket ind i klassen). <% En anden "forbedring" man kan lave på brugerklassen er at den aktuelle bruger kunne være default for klassen, dvs. når klassens hent-motode kaldes uden parameter, så er det den aktuelle bruger der hentes. Det er besnærende at hente den aktuelle bruger som udgangspunkt, men hvis man bruger klassen meget i andre sammenhænge end til at operere med den aktuelle bruger, kan dette belaste databasen og systemet i en højere grad en ønsket, derfor vil jeg anbefale kun at gøre dette med ekstra omtanke. class bruger Brugen af klassen kan dermed omskrives som følger: <% Ændringen fra det forrige eksempel er ikke stor, men man overlader nu til klassen at bestemme hvordan oplysninger om den aktuelle bruger opbevares mens de er online. Det kunne være man senere ønskede at opbevare "tilstand" på en anden måde end i session og med en klasse til at pakke logikken ind, behøver man kun at koncentrere sig om at rette klassens logik, for at ændre håndtering af "tilstand". Klassen kunne udvides med andre faciliteter, f.eks. mulighed for at
|
| Sidst opdateret: 10-09-2008 19:02:22 |
|
Tilmeld link |
Tilføj Link |
Tilføj Link |
@-begynder Erklæring om beskyttelse af personlige oplysninger |