Jag har ju skrivit om mitt ramverk tidigare och även om det inte är klart ännu så tyckte någon att jag skulle göra saken mer officiellt, så nu har jag tagit steget och lagt upp mitt projekt på GitHub. Länken finner ni här:
https://github.com/saurid/Up-MVC
GitHub är en webbplats där man delar med sig av sin kod, sitt projekt och ett sätt att lättare samarbeta och arbeta mot samma kodbas. GitHub har idag en miljon användare och nära tre miljoner hostade projekt.
Så nu är det enklare att ta del av koden och också följa mina uppdateringar. På gott och ont så klart
Ni som har följt min blogg vet att jag håller på att programmera ihop ett litet ramverk för PHP, och för någon månad sen döpte jag det till Up MVC. Även om syftet har varit att dela med mig av lite kunskaper jag sitter inne på till de som vill lära sig lite mer om PHP-programmering i allmänhet och MVC-ramverk i synnerhet, så har projektet blivit lite mer än så. Det har visat sig att det faktiskt har varit riktigt roligt att arbeta med helt enkelt!
Varför uppfinna hjulet igen säger många och jag kan väl hålla med om det, men jag arbetar ju inte med detta. Jag har inga krav på att vara produktiv, inga krav på att fixa buggar så fort de upptäcks. Jag gör allt detta för att jag tycker det är roligt och givande.
Just nu arbetar jag på formulärhantering, validering och ett rollbaserat rättighetssystem. Felhanteringen har jag också lagt ner en del energi på, nu fångas alla (nästan) felmeddelanden som ramverket genererar upp i en detaljerad HTML-formaterad sida som visar lite debug-information. Modulhanteringen har också blivit mer komplett. Dessutom har manualen/dokumentationen (likaså kommentarer i filerna) blivit mycket mer omfattande och beskrivande.
Ledord genom utvecklingen har varit enkelhet och lätthet Lätt att förstå, lätt vikt (storlek på disk) och enkelt att arbeta med. Jag hoppas att det kommer att fortsätta att vara så även i fortsättningen, även om antalet filer i kärnan ökar för varje version. Kärnan ligger idag på ca 33 kB fördelat på 38 filer (de flesta av dem mallar och andra filer tillhörande formulär-hanteraren och valideringen) och det är inklusive en ganska ”verbose” fil-dokumentation (vad heter det på svenska? Ordrik?). Det får väl anses vara ganska bra?
Funktioner/funktionalitet som erbjuds är bl.a.:
- MVC-baserat (Model, View, Controller)
- Objektorienterat (OO) i PHP5
- Autoload av klasser genom __autoload
- Frontcontroller som fångar upp samtliga anrop till applikationen
- Routing som tolkar aktuell URL utan behov av konfigurering
- Tydlig separation mellan logik och utseende genom vy-lagret
- PHP-baserat mallsystem (templates) som de flesta förstår sig på att använda
- Enkel och säker databashantering via modell-lagret som använder sig av PDO
- ”Lazy loading” av nästan alla objekt – Ingen kod körs i onödan
- Tydliga felmeddelanden som visar vad som gått fel
- Inga komplicerade relationer mellan objekt som försvårar för den som vill lära sig mer om systemet
- Den medföljande dokumentationen fungerar som demo
- Ett pågående webbshop-projekt finns som en mer avancerad demo
- ALL dokumentation (även kommentarer i kärnan) är skriven på svenska och följer reglerna uppsatta av phpDocumentor
- En grafisk profil!
Under utveckling är:
- HTML-formulärhantering
- Validering av data/formulärdata
- Roll-baserade rättigheter (RBAC – Role Based Access Control)
- Implementering av Gettext internationalisering (i18n) genom tredjeparts-skript
Det vill säga mycket av den funktionalitet man förväntar sig av ett större ramverk, men så litet att det går fort att förstå och börja använda! Jag hoppas att ni som kan vara intresserade att lära mer om PHP-programmering och ramverk ger det en seriös titt.
NYTT: Up MVC finns nu för nerladdning på GitHub på denna länken:
https://github.com/saurid/Up-MVC
Nedladdning av kod (med medföljande manual) och möjlighet till diskussion finns på php-portalen där jag också är moderator:
http://www.phpportalen.net/viewtopic.php?t=116968
Läs och lär!
Nu är det hög tid att jag blir klar med webbshopen som bygger på mitt lilla mvc-ramverk. Båda applikationerna programmeras i utvecklingssyfte. Inte min då, utan för de som vill lära sig mer om php-programmering. Koden kommer att läggas upp på www.phpportalen.net.

Någon gång hade jag tänkt att ersätta waeke.se med WordPress som CMS även där. Men då krävs att jag har ett pålitligt och enkelt webbshop-plugin. Det finns en hel del att välja mellan, men inget jag har testat har känts helt perfekt. Idag använder vi ett egenprogrammerat system som fungerar precis som vi vill, så halva jobbet mot ett WordPress plugin är ju faktiskt redan gjort.

Så nu är arbetet påbörjat! Mitt plugin kommer att heta ”Waeke up shop” (som i ”wake up shop”). Jag använder redan ett litet minimalt annonssystem som jag kallar för ”Waeke up ads”. Vem vet, det kanske blir en hel rad med fina plugin innan jag är klar
Men det kommer att ta ett tag till…
Jag håller fortfarande på att lära mig mer om WordPress som CMS (Content Management System) och som bloggverktyg. Jag är dock väl bevandrad i PHP, så det har inte varit något större problem att sätta mig in i systemet. Men efter att ett antal praktiska plugins installerats, så var sidan inte riktigt som jag förväntat och hoppats på.
WordPress-plugins och prestanda
Det är ingen hemlighet att många plugins kan göra att en WordPress-installation blir långsam och slö. Det är ganska naturligt med tanke på att de flesta använder många hooks för att utöka funktionaliteten i standardsystemet. Vill man dessutom använda widgets från installerade plugins, så tar det ännu lite mer kräm från webservern.
waljefors.se ligger dessutom på ett webbhotell med en delad servermiljö, så det var uppenbart att det gällde att optimera prestandan ordentligt. Även med diverse testade cache-plugins (ett i taget givetvis) så förblev sidan långsam att ladda.
Av ren lathet (nåja) så använder jag plugins som jag lätt skulle kunna implementera direkt i mitt tema istället. Ett exempel är Google translate. Pluginet jag använde var konstigt nog ganska tungt på sidan trots sin enkelhet, troligtvis beroende av att koden inte validerade vilket gjorde att sidan rendrerades långsammare.
Kategori och Arkiv slog jag samman till en widget, vilket faktiskt gav en liten prestandavinst.
Jag har för tillfället också tagit bort Facebook-gilla-knapparna. De är gör helt enkelt sidan för långsam. Förhoppningsvis hittar jag snart en bättre lösning.
Jag använde tidigare ett statistik-plugin för att följa min besöksstatistik. Det var riktigt snyggt och gav mycket vettig information. Men Google kan ge nästan lika bra statistik och jag slipper hosta det på min egen server. Det var dags att byta bort.
Av de fem plugins jag har kvar aktiva nu, så är det bara tre som används för sidvisningen, de sista två används bara i admin. Jag använder inte längre något cache-plugin.
Validering av HTML och CSS
Pluginet för Google translate hade ingen validerad HTML. Det stack ordentligt i mina ögon. Dessutom gjorde det, som tidigare nämnt sidan mer långsam. Jag designade istället om och lade samma widget-funktionalitet direkt i temat för sidan. Det validerar, rendrerar snabbare och ser bättre ut!
Jag har också fixat en hel del andra små valideringsbuggar, så de flesta sidorna borde validera alldeles utmärkt när det gäller HTML. Tyvärr kommer min CSS inte validera eftersom min bild- och kodvisning använder javascript-bibliotek med CSS som jag inte kan påverka.
Enkelhet ledordet i de många små designändringarna
Sidan har tidigare varit blogglös och det visade sig att den designen helt enkelt inte passade riktigt bra med den mängden data som behövs på en liten plats i en blogg. Jag har förenklat och skapat lite mer luft runt överskrifter som den vänstra spalten. Jag upplever designen som mer luftig och lättläst nu. Mindre avgränsande streck och överskrifter.
Jag har också lagt till en bättre möjlighet att gå mellan sida till sida eller från inlägg till inlägg genom länkar i topp och botten av sidan. Bättre användarvänlighet och förhoppningsvis utan för mycket extra klutter i designen.
Sökmotoroptimering (SEO)
Jag har gått igenom överskrifter och beskrivningar så att innehållet kan indexeras lättare nu. Många sidor är ganska grafiktunga och har inte så väldigt mycket text och det gillar inte alltid sökmotorerna, så där är det extra viktigt hur man lägger upp den lilla informationen som Google och andra sökmotorer kan använda.
Jag är inget proffs på SEO ännu, men jag lär mig mer och mer och börjar närma mig mina mål sakta men säkert.