![]() |
Tror det är lättare att förklara om jag skriver "kod-aktigt":
PHP-dokument (Om detta är klasser från ett "funktionsdokument"): Citat:
Sen kommer man ju självklart alltid få skriva vissa funktioner/metoder för projekt men hade tänkt det som en bas för HTML i första hand. Jag föredrar att inte använda fördefinerade ramverk då jag hellre söker och försöker lösa problemen själva. Det kanske är dumt och tar längre tid men ser programmering som en hobby. En kock kanske har en egen kockbok ;) (ändrar mig till amatörkock då jag sa hobby innan) :P |
För mig känns det som att du försöker skriva en templating engine, i PHP. Sånt är trevlig, men ska jag säga, det finns flertalet sådana, i mikro till giganter.
Om du på en vanliga simpel PHP sida vill wrappa en header och footer med potentiella variabler, så skulle jag skapa en PHP-fil, som styrs av en PHP-class och metoder samt argument till metoderna. Du sätter då default-argument, som kan överstyras vid behov. Grovt exempel Citat:
Fast, jag kanske helt missförstått och repeterar vad andra sagt :) |
Citat:
Bra liknelse med en kock, jag gillar att laga mat. Ska jag laga något mer utförligt jag inte har en aning om hur jag ska gå tillväga med så lagar jag från olika recept de första gångerna... då har jag lite koll på vilka ingredienser som kan passa och kan ett par variationer som funkar. Då har man en bra utgångspunkt att variera och förändra ifrån. Skriver för övrigt recipes rätt mycket just nu, fått till ett bra gäng riktigt användbara cookbooks som jag laddar upp med min knife. Har också planer på att börja använda ett test kitchen. På tal om matlagning :) |
Tror du är inne på rätt spår..
Jag brukar använda en "View" klass , som hanterar olika template filer. T.ex kan en sid template se ut så här: <div> <h1><?php echo $this->h1 ;?></h1> <p><?php echo $this->content;?></p> </div> Sidans controller instansierar ett objekt $page= new View("sida1.php"); $page->content = "Innehållet"; $page->h1 ="header"; Och sen brukar jag ha en template för själva layouten, det binds samman så här rent principiellt typ: $master= new View("Master.php"); $master->content = $page->render(); Master.php : <head> <title>test</title> </head> <body> <main><?php echo $this->content;?></main> </Body> Det är även bra att undvika att skapa objekt direkt från en controller , så det ser ut så här i praktiken.. class Page extends \MyLib\ControllerAbstract { public function index() { $this->view->h1 = "h1"; $this->view->content = "xx.."; $this->masterView->doc_title = " dokument titel "; // bra om man även kan modifiera master sidan direkt så här typ return $this->view; // $this->view är en instans av "View" klass } } |
Citat:
Sen kopplar man ihop det hela med "tekniska" klasser som lägger på HTML-taggar där det behövs. Man kan givetvis koppla ihop detta med en rad andra externa ramverk efter tycke och smak. Det finns dessutom olika skiktningsmodeller: MVC - Model-View-Controller (Gammal modell som använts i mer än 20 år) eller MVVM Model-View-ViewModel (Modernare variant som anpassats till många olika GUI-device). Se http://en.wikipedia.org/wiki/Model_View_ViewModel för mer info. Det finns en annan paradigm som kallas test-driven-utveckling (TDD) men den har ett grundläggande tankefel, det går nämligen aldrig att "testa" fram bra kvalitet i en applikation. Kvaliteten måste man designa in från början genom att ha järnkoll på arkitekturen och verksamhetens krav, det är inte testerna som är kraven som många TDD förespråkare hävdar. Jag är som sagt mer anhängare av DDD-paradigmen med arkitekturell design. Givetvis ska man testa koden utförligt, men det är inte alltid möjligt att testa allt man behöver testa genom automatiska tester, det skulle kosta för mycket att bygga såna automatiska tester, så projektet skulle bli olönsamt. Man behöver en kombination av automatiska testrutiner och manuella för att optimera ekonomin i projekten. |
Citat:
Det finns heller ingen pragmatisk TDD-förespråkare som säger att du ska ha 100% code coverage eller för den delen inte använda andra testmetoder. Med MVVM ska man tänka på att den inte fått så stor spridning ännu. En annan potentiell uppstickare är HMVC. Både är värda en titt om man tycker att MVC-modellen har brister för en speciell applikation (tänk på att många MVC-ramverk i princip låter dig använda HMVC). |
Citat:
Citat:
|
Citat:
Skall man vara strikt skall ju TDD forma koden och det verkar krocka med DDD som jag förstår det. Det kanske är det Conny menar? Tester kan man såklart ha i DDD också. |
Citat:
|
Citat:
|
Alla tider är GMT +2. Klockan är nu 04:33. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson