14
January
2009
6:e året med PHP Architect

Nu börjar mitt 6:e år med Php Architect, tidningen för den som gillar att utveckla med PHP. Från och med detta nummer har de lyft layouten rejält, den ser nu riktigt proffsig och är betydligt mer lättläst än tidigare. Jag använder tidningen mer som uppslagsverk, det vill säga att när jag söker inspiration eller lösningen på ett problen, då letar jag i den.
Kan rekomenderas starkt. Väljer man att prenumerera kan man ladda ned en pdf. Dessutom får man numer ett pappersexemplar i brevlådan efter ca 14 dagar.
Helt klart, intressant läsning!
/Erik
29
December
2008
PHP and memcache, speeding up a website?!
m e m c a c h e d
When reading on Facebook developing notes, which uses PHP among other languages, I stumbled on an interesting article about memcache. Memcache is a way to cache objects in memory, and after reading a blog post about php and memcache I realised that this little neat cache tool can be magick if you run a website with heavy load.
Definitely something to think on when designing a new web site. Especially when Zend Framework supports memcache!
/Erik
09
September
2008
The quest of routing in Zend Framework
I am a ZF beginner and I am trying to find out a way to handle routing.
Let say that I am building a website with different sections:
http://example.com/news
http://example.com/articles
http://example.com/gallery
http://example.com/forum
I am wondering how should I set up routing? Take the forum as an example.
Let say I use this principle:
http://example.com/module/controller/action?var1=value&var2=value
And apply the principle to the forums function addpost:
"http://example.com/forum/addpost" should be routed to Forum module, viewthread Action, indexAction() method
The indexAction method displays a form where you can write your post. The forms action is pointing to http://example.com/forum/addpost/add
which is represented by the addAction() method in the same controller.
By choosing module/controller/action route pattern, each controller manages a complete "forum function" like:
- Adding a post (writing, preview, adding post)
- Editing a post (writing, preview, update post)
- Reading a post (display)
This looks like a good solution for me? But is it working?
And how can you handle a form which has several submit buttons in the above context? I must point the forms action to a *Action method in the Controller and inside this method I must handle which button the user has pressed and do a second "dispatch" on my own? I would like to have organized code, with one method per "subfunction". Has ZF built in functions for this?
/Erik
07
September
2008
Staplande steg med Zend Framework
Har i dagarna fått lite smak på att koda lite. Har köpt en bok, PHP|architect’s guide to Programming with Zend Framework. Mycket intressant läsning som gör mig grymt nyfiken. Dock verkar tröskeln vara hög för att kunna använda Framworket eftersom i alla fall jag vill veta hur det funkar i detalj.
Håller just nu på förstå hur routing sker. Zend Framework bygger på principen att alla request hamnar i en enda php-fil, mha mod rewrite om man kör apache. Zend Framework använder en sk FrontController för att expedera (dispatch) alla anrop till individuella sk Action Controllers.
I denna process ingår routing och det är den som jag just nu studerar. Vill luska ut hur Zend Framwork routar följande exempel:
http://examplecom/forum/viewboard/board/ot
Detta enligt principen http://example.com/controller/action/var/value
Ovanstående är standard routing-inställningar i Zend Framework och skulle i så fall routa anropet till classen Forum och metoden viewboardAction.
Dock inser jag att klassen Forum skulle bli gigantiskt stor eftersom den skulle behöva innehåll alla Action-metoder som ett forum kräver. Det blir många, vilket betyder att man måste göra refactoring på något bättre sätt. Hur detta skall göras har jag inte ännu lyckats klurat ut.
/Erik
17
February
2008
RoundCube with Captcha Security Image and mvision skin support

RoundCube Webmail is a browser-based multilingual IMAP client with an application-like user interface. It provides full functionality you expect from an e-mail client, including MIME support, address book, folder manipulation, message searching and spell checking.
The text above is from the RoundCube Webmail Project website. RoundCube is indeed a very interesting webmail project. It is using Web 2.0 technologies and is highly customable. The team behind the project is certainly creating one of the best webmail applications ever!
For a couple of week ago I was browsing through the RoundCube forum and found a template called mvision made by Miha. I was totally baffled since it is a very good looking skin and it is working very well.
Localization
RoundCube is supporting a lot of languages. I have only localized two of the language files to support localized captcha security text field description (Swedish and English). All other languages are showing “Security Code”.
Prerequisite
PHP5 and GD-library with support for freetype is needed for the captcha function
2008-10-01 Update
Added support for mvision2 and also updated roundcube to 0.2beta. Source package is removed from server.
2009-02-15 Update
- Upgraded to round cube 0.2 stable.
- Fixed configuration problem
- Integrated mvision 2.2
- Added captcha javascript reload function on login page (se picture in this blog post)
2009-03-10 Update
- Reworked zippackage, fixed some typos etc (thanks to Cyril DUCHENOY for his feedback)
Download complete source roundcube 0.2stable_mvision2.2captcha.zip (4.6MB).
Download svn patch roundcube 02stable_captcha (178KB) with default theme only
Download svn patch rcube 0.2stable _mvision2.2captcha.patch (232KB)
/Erik
25
April
2007
Zend framework är kusligt bra genomtänkt!
Har ägnat en hel del timmar åt att spana in Zend framework och kan bara konstatera att det är kusligt bra genomtänkt. Mycket finns med från början och det svåra är att finna hur man skall tillämpa det hela, trots att det finns många bra guider.
Om CMAES kommer bli förverkligat någon gång i framtiden är Zend framework verkligen intressant att titta närmare på.
Hantering av exceptions
En sak som jag är kritiskt mot är hanteringen av sk exceptions. Enligt min filosofi anser jag att överliggande kod bör kunna få en felberoende felkod för att kunna hantera exceptions rätt beroende på vilket exception som kastades. Detta görs inte i zend framework (felberoende felkod saknas)
Vidare tycker jag att textmeddelandet i ett exception skall vara avsett för utvecklaren i först hand, inte primärt för användaren. För att få fram ett genereiskt användarmeddelande kan man använda Exceptionklassen samt felkoden som nyckel för att kunna skapa ett generiskt felmeddelande avsett till användaren. Detta funkar dessutom bra om applikationen är flerspråkig eftersom det då blir möjligt att ändra språket.
För mer beskrivande felmeddelanden är det svårare, oavsett metod. Det kräver mer implementation och tänk bakom, men det är inte omöjligt.
/Erik
15
January
2007
PHP Paradox!
Upptäckte igår att det PHP-framework som jag har jobbat med för att använda i CMAES är kuslikt likt Zend framework.
Skall därför undersöka Zend Framwork lite mer. Inte minst för att studera likheter och olikheter utan också för att lära mig mer hur Zend Framwork är uppbyggt. Kan vara matnyttigt inför framtiden 
/Erik
02
July
2006
PHP poesi
Hittade detta i maillingslistan php-dev. Postat av Martin Alteriso
<?php
$timeWaiting = 0;
while (!$you->near($me)) {
$me->thinkAbout($you);
$timeWaiting = 0;
while (!$you->near($me)) {
$me->thinkAbout($you);
switch (true) {
case $timeWaiting < 5:
$me->wait($you);
break;
case $timeWaiting < 10:
$me->worry();
break;
case $timeWaiting < 20:
$me->lookFor($you);
break;
case $timeWaiting < 40:
$me->worry();
$me->lookFor($you);
break;
case $timeWaiting < 80:
$me->worry();
$me->cry();
$me->lookFor($you);
$me->lookFor($you);
$me->lookFor($you);
break;
case $timeWaiting < 160:
$me->worry();
$me->cry();
$me->drink();
$me->lookFor($you);
$me->lookFor($you);
$me->lookFor($you);
$me->thinkAbout($you);
$me->thinkAbout($you);
$me->cry();
$me->lookFor($you);
$me->lookFor($you);
$me->drink();
$me->drink();
break;
default:
throw new CantLiveWithoutYou();
die("alone");
}
$timeWaiting++;
}
$me->happy = true;
?>
19
February
2006
PHP stagnation!
Att bli far är inte helt lätt om man vill fortsätta med sina hobbies. Dom som känner mig vet att jag gillar att pilla med kod, särskilt PHP. Det är ett sätt för mig att fly från världen och få framförallt vara kreativ på mitt egna sätt. Men när man blir förälder uppstår en konkurrens, vilket betyder att man måste prioritera.
Det var en av mina chefer på jobbet som i höstas som ställde frågan: -"Vad skall du prioritera bort nu när du blir far?". -"Va?" sade jag och han förklarade vad han menade, vis av erfarenhet.
Gick och funderade rätt mycket på hans ord i ett par veckor och insåg att han hade ju helt rätt. Började därför redan under sena hösten med att gå ur styrelsen i både bostadsrättsföreningen samt samfällighetsförening i det område jag bor i. Efter att Simon föddes har det kännts som ett helt rätt val.
Men vad har då hänt med PHP-kodningen? Ja, den har mer eller mindre stagnerat. Har nämligen otroligt svårt att starta upp och börja koda. Hittar alltid tusen andra smågrejor som verkar vara mer intressant när jag får möjlighet att sitta framför datorn.
Har lite små funderingar att tvinga mig själv att starta, för jag vet att om jag bara kommer igång funkar det förutom när Simon leker eller lever runt ute i vardagsrummet. Då kan jag inte fokusera eftersom hörseln och därmed hjänan koncentreras mot vad Simon och min fru sysslar med.
Min dröm och stora mål med PHP-kodandet just nu är att bli så pass klar med CMAES, som skall bli en helt ny teknisk plattform för NordicAudi:s framtid. Har kommit en bra bit på vägen men det har tagit sin tid. Närmare bestämt tre år och just därför vore det helt fantastiskt att kunna sjösätta den nya plattformen.
Hur skall jag då finna den tid samt inte minst motivation för att kunna färdigställa CMAES? Tja, den frågan är inte helt enkel att besvara. Framtiden får utvisa! Helt klart är att jag inte vill sluta koda PHP, för det är så otroligt roligt att få vara kreativ och kunna jobba med något som används av tusentals andra på Internet.
22
December
2005
Zend Certification – svårt!
Har läst igenom första boken, Zend Certification study guide, och har sakta påbörjat den andra boken, The Zend certification Practice test book. Mitt intryck än så länge är att det är betydligt svårare än jag trodde från början.
Andi Gutmans, en av skaparna av PHP, skriver så här om sin egen examen:
A PHP developer with no experience really cannot pass this exam, which I think is great. It really certifies PHP developers who have experience in developing PHP based web applications in the real world.
Börjar sakta inse att detta kommer bli svårt. Vissa frågor är busenkla, andra svårare och vissa kan jag inte alls. Nu handlar det om att plugga in många funktioner!

