, at udvikle os til en vedvarende og lag,,,,, 5,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet prøvekørt på. at snakke med den gnavne php programmermockery: en bedre måde, en af de mest forvirrende design mønster er vedholdende.behovet for en ansøgning om at fortsætte sine interne statslige og data er så stor, at der sandsynligvis mange - hvis ikke i hundredvis af forskellige teknologier til at løse dette fælles problem.desværre, ingen teknologi er en magisk kugle.hver ansøgning, og nogle gange hver komponent i ansøgningen, er enestående i sin egen måde - hvilket kræver en entydig løsning.,,, på det pædagogiske, vil jeg lære dig noget om bedste praksis for at hjælpe dig til at afgøre, hvilken tilgang til at tage, når de arbejder i fremtidige ansøgninger.jeg vil kort komme ind på et højt niveau design bekymringer og principper, efterfulgt af en mere detaljeret overblik på aktive rekord design -, kombineret med et par ord om bord data gateway - design mønster. selvfølgelig, jeg vil ikke blot lære dig teorien bag designet, men jeg vil guide dig igennem. det begynder ved kode og bliver til en struktureret vedvarende løsning.,, to historier om en enkelt ansøgning, databasen er for data, ikke for kode, i dag ikke programmør kan forstå denne arkaiske system.,, den ældste projekt jeg har arbejdet på begyndte i år 2000.dengang, et hold programmører startet et nyt projekt ved at evaluere forskellige krav, tænkt på arbejdsbyrde anvendelse skal håndtere, afprøvet forskellige teknologier og er nået frem til en konklusion: alle på den kodeks for anvendelse, bortset fra, index.php, fil, skal opholde sig i en mysql database.deres beslutning kan lyde vanvittigt i dag, men det var acceptabel for 12 år siden (ok...måske ikke). de startede med at skabe deres base tabeller, og andre tabeller for hver hjemmeside.løsningen var...for en tid.de oprindelige forslagsstillere vidste, hvordan at opretholde det, men hver enkelt forfatter tilbage en efter en... forlader kode base i hænderne på andre nyankomne. i dag ikke programmør kan forstå denne arkaiske system.alt begynder med en mysql forespørgsel fra index.php,.resultatet af denne forespørgsel tilbage nogle php kode, der udfører endnu flere spørgsmål.den enkleste hypotese omfatter mindst fem database tabeller.der er naturligvis ingen prøvninger eller specifikationer.om noget er umuligt, og vi er simpelthen nødt til at omskrive hele modul, hvis noget går galt, den oprindelige udviklere ignoreret det faktum, at en database bør kun indeholde data, ikke forretningslogik og præsentation.de blandede folkesundhedsprogrammet og http: //kode med mysql og ignoreret højt niveau udformningsforslag.,, html er for præsentation og præsentation, skal alle ansøgninger bør koncentrere sig om at respektere en ren, højt niveau design.,, som tiden gik, den nye programmører, der er nødvendige for at tilføje yderligere elementer til systemet, samtidig med at de om fastsættelse af gamle insekter.der var ingen måde at fortsætte med at anvende mysql tabeller for alt, og alle, der er involveret i at opretholde den kode, enige om, at dets udformning var helt forkert.det nye programmører evalueret forskellige krav, tænkt på arbejdsbyrde anvendelse skal håndtere, afprøvet forskellige teknologier og er nået frem til en konklusion: de besluttede at flytte så meget kode som muligt for at den endelige udformning.igen kan denne beslutning lyder vanvittigt i dag, men det er lysår fra de tidligere skandaløst design., udviklere vedtaget en blive ramme og baseret på anvendelse omkring det, begynder alle nye og modul med en ny model.det var let, model var beskrivende og de vidste, hvor de skulle finde den kode, der udfører en specifik opgave.men det er sådan det endte med skabelon filer indeholdende motorens domænespecifik sprog (dsl)http: //, folkesundhedsprogrammet og naturligvis mysql spørgsmål. i dag, mit hold bare ure og vidundere.det er et mirakel, at mange af de synspunkter, der faktisk arbejde.det kan tage en stor mængde tid, til at bestemme, hvordan oplysninger kommer fra databasen til lyset.ligesom sin forgænger, det er et stort rod!de udviklere overset den kendsgerning, at et synspunkt bør ikke indeholde forretnings - eller persistens logik.de blandede folkesundhedsprogrammet og http: //kode med mysql og ignoreret højt niveau udformningsforslag.,, højt niveau applikationsdesign,,, en hån er et objekt, der fungerer som sit modstykke, men udfører ikke den rigtige kode.,, alle ansøgninger bør koncentrere sig om at respektere en ren, højt niveau.det er ikke altid muligt, men det skal være en høj prioritet.en god højt design har isoleret forretningslogik.objekt oprettelse, persistens og levering er uden for kernen, og tilhørende områder punkt kun mod forretningslogik.,, at isolere forretningslogikken åbner store muligheder, og det bliver noget af et stik af, hvis den eksterne afhængighed altid pege i retning af erhvervslivets logik.for eksempel, du kan bytte den tunge mysql database med en let sqlite3 database.,, forestille mig, at være i stand til at smide din nuværende mvc ramme og erstatte det med et andet, uden at røre ved logik.forestil dig, at resultaterne af din ansøgning gennem en tredjemand api - og ikke over http, eller ændring af enhver tredjemand, teknologi, du bruger i dag (undtagen programmeringssprog, naturligvis) uden at røre ved den forretningslogik (eller uden for meget besvær.forestil dig, at alle disse ændringer og din test vil stadig bestå., gennem en arbejder løsning for vedvarende en blog stilling, til bedre at identificere problemerne med en dårlig, men arbejder, design, jeg vil starte med et enkelt eksempel, du gættede det, en blog.i hele denne lektion, jeg vil følge nogle prøvekørt udvikling (tdd) principper og gøre de test, let forståelige - også selv om du ikke har tdd - erfaring.lad os forestille os, at du bruger en mvc rammer.ved at redde en blog, post, en registeransvarlig, der hedder, blogpost, udfører en, save() metode.denne metode fører til en sqlite database, opbevarer en blog post i databasen, lad os skabe en folder, der kaldes, data, i vores kodeks er mappe og kigge på det register i panelet.oprette en database og en tabel, som denne: $sqlite3 myblog sqlite version 3.7.13 2012-06-11 02:05:22 ind. "hjælp" for vejledning indgår sql erklæringer afsluttes med et ";" sqlite > skabe tabel blogposts (afsnit varchar (120) primære nøgle, indhold tekst, published_timestamp timestamp), vores, save(), metode bliver de værdier af form som et system, der kaldes, $data: klasse blogpostcontroller {funktion redde ($data) ($dbhandle = nye sqlite3 ('data /myblog) $forespørgsel = "indsættes i blogposts værdier (".$data ['title "]."".$data ['content "]."".time(). '")og $dbhandle - > direktør ($søgning)}} denne kode virker, og du kan bekræfte det ved at kalde det fra en anden klasse, der passerer en forud fastlagt, $data system, som denne: $- > objekt = nye blogpostcontroller. $data ['title '] = først efter afsnit "$data ['content'] = nogle seje indhold for den første post". $data ['published_timestamp '] = time(). $- > objekt - > medmindre ($); indholdet af de $data, variabel faktisk blev reddet i databasen:, sqlite > udvælge * fra blogposts. først efter afsnit
at udvikle os til en vedvarende og lag
Previous:hænderne