Oryx

Meta-Model Driven Object Hinderlijk met meerdere erfenis
Download nu

Oryx Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Richard Hundt
  • Uitgever website:
  • http://search.cpan.org/~rhundt/

Oryx Tags


Oryx Beschrijving

Meta-Model Driven Object Persistentie met meerdere erfenis Oryx is een voorwerp-persistentraamwerk dat zowel object-relationele mapping als DMB-stijldatabases en als zodanig niet is gekoppeld met een bepaald opslagback-end. Met andere woorden, u zou in staat moeten zijn om een RDMBS uit te wisselen met een DBM-stijldatabase (en vice versa) zonder uw aanhoudende klassen te veranderen. Dit wordt bereikt met het gebruik van een meta-model dat zo dicht mogelijk bij Perl past - en vanwege de uitstekende introspectiecapaciteiten van Perl en enorme flexibiliteit - dit is inderdaad heel dichtbij. Om deze reden worden hash, array en referentie-associatietypen geïmplementeerd met het liberale gebruik van `stropdas '. Het gebruik van een meta-model, zij het een zeer transparante, ondersteunt conceptueel de de-koppeling van opslagback-end van aanhoudende klassen, en voor het grootste deel, naast een echt klein eind van meta-gegevens, zou u persistente klassen gebruiken Op een manier die vrijwel niet te onderscheiden is van gewone PERL-lessen.oRYX volgt het droge principe - herhaal jezelf niet - geïnspireerd door de fantastische robijn op rails framework, dus wat u zegt, u zegt het slechts één keer bij het definiëren van uw $ schema jouw klas. Daarna wordt alles voor u verzorgd, inclusief automatische tabelcreatie (als u een RDBMS-opslag gebruikt). ORYX probeert de tabellen te namen en de linktafels op deze manier op deze manier te maken, zodat als u u moet in staat moeten zijn om uw weg in het schema met gemak te vinden. Omdat oryx relaties implementeert als gewone perlarray en hash referenties, kunt u creëren Eventuele structuren of objectrelaties die u in native perl zou kunnen creëren en deze in een database blijven bestaan. Dit geeft u de flexibiliteit om bomen, cyclische structuren, gekoppelde lijsten, gemengde lijsten (lijsten met instanties van verschillende klassen) te maken, enz. Ook ondersteunt meerdere overerving door het native gebruik basismechanisme van Perl. Abstracte klassen, die eenvoudig klassen zonder attributen zijn, zijn ook zinvol. Synopsis # Definieer een persistente klassenpakket CMS :: pagina; Gebruik basis qw (oryx :: klasse); Onze $ schema = {Attributes => , verenigingen => }; 1; # ... Voor meer informatie Zie Klasse Meta-gegevens in L) # ============================================================================================================================================================================================== ========================================== # Gebruik een persistente klasse gebruik CMS: :Bladzijde; $ Page = CMS :: Page-> Maken ({titel => 'leven in de metaverse'}); $ Page = CMS :: Page-> Ophalen ($ ID); $ Page-> Update; $ Page-> Delete; @PAGES = CMS :: Page-> Zoeken ({Author => 'Richard Hun%'}, @order, $ limiet, $ offset); # Zoeken met SQL waar clausule (welke pagina's een bepaalde paragraaf) bevatten): @Book = CMS :: Page-> Zoeken ({bestaat => q {(selecteer ID van pagina. 'Meta%')}}); # ================================================= ========================== # Commit Your Changes $ Page-> Commit; # ================================================= ========================== # Attribuut mutator $ Page-> Titel ('The Metamanic Mechanic'); $ tite = $ Page-> Titel; # ================================================= ========================== # Reference Association mutator $ Template_obj = $ Page-> Sjabloon; $ Page-> Sjabloon ($ Template_obj); # ================================================= ========================== # Array Association Accessor $ Page-> Paragrafen -> = $ INTRO_PARA; $ paragraaf = $ Page-> Paragrafen -> ; # ================================================= ========================== # Array Association Operators $ CONC = POP @ {$ Page-> Alinea's}; $ intro = shift @ {$ page-> alinea's}; Druk op @ {$ Page-> alinea's}, $ Concel; Unshift @ {$ page-> paragrafen}, $ new_intro; Splice @ {$ page-> alinea's}, 1, 4, ($ SAMENVATTING); # ================================================= ========================== # HASH Association Accessor $ image_obj = $ Page-> Afbeeldingen -> {logo}; $ Page-> Afbeeldingen -> {mug_shot} = $ my_ugly_mug; @Keys = toetsen% {$ page-> afbeeldingen}; @Values = Waarden% {$ Page-> afbeeldingen}; # ================================================= ========================== # Ondersteuning voor Klasse :: Observeerbare Page-> Add_ObServer (sub {My ($ item, $ actie) = @ _; # ...}); $ Page-> Add_observer (...); # instance # ================================================ ============================ # Aansluiten op Storage $ Storage = Oryx-> Connect (); # of specificeer een schema $ opslag = oryx-> connect (, 'CMS :: schema'); # voor dbm :: diepe back-end oryx-> connect (, 'CMS :: schema'); # ================================================= ========================== # Implementeer de Schema $ Storage-> Deployschema (); # Voor alle bekende klassen (via `gebruik ') $ Storage-> Deployschema (' CMS :: schema '); $ Storage-> Deployclass (CMS :: pagina '); # automatisch implementeren als dat nodig is, gebruik oryx (auto_deploy => 1); # Voor alle klassen CMS :: pagina-> auto_deploy (1); # Alleen voor deze klassenvereisten: · Perl


Oryx Gerelateerde software