maandag 9 juni 2008

Deel 3: bake - het model

Voor het voorbeeld volg ik vanaf nu het eerder genoemde boek van Duane o'Brien.
Om code te genereren (bake) wordt gebruik gemaakt van de CLI versie van php, die een eigen php.ini heeft. Als deze ini niet bestaat, staat een heleboel niet aan, waaronder mysql. Je kunt php -i gebruiken om te zien wat er allemaal aan settings aanwezig is (vergelijkbaar met phpinfo() maar dan op de commandline).
Bekijk of mysql beschikbaar is voor de PHP CLI.
php -m
en controleer of mysql erbij staat. Als dat niet zo is gaat bake van het model niet lukken, en krijg je de foutmelding:
Call to undefined function mysql_connect()
met nog het een en ander eromheen.
Bake werkt (vooralsnog) met php cli, de commandline versie van PHP. Deze CLI heeft een eigen php.ini.

Eerst moet je weten waar PHP CLI zijn settings zoekt:

php -i > info.txt

Voor het gemak sturen we de output naar info.txt. Open nu info.txt en zoek naar de regel die begint met Configuration File (bovenin)

In mijn geval wordt php.ini onder \windows gezocht. In die dir bleek bij mij helemaal geen php.ini te staan.
Kopieer uit de EasyPHP/php5 dir het bestand php.ini-dist naar de dir waar php-cli hem zoekt en hernoem het naar php.ini. Open het bestand en zoek de regel extension=php_mysql.dll
Deze regel is waarschijnlijk uitgecommentarieerd (een ';' als eerste teken). Haal de ; weg aan het begin van de regel. Na opslaan kun je opnieuw php -m uitvoeren op de commandline.

Als mysql er nu wel bij staat kun je de volgende stap maken: het bakken van een model. Daar heb je eerst een databaseschema voor nodig. Maak een database aan in mysql
create database social

en voeg de volgende tabel toe:

CREATE TABLE `users` (
`id` int(10) NOT NULL auto_increment,
`firstname` varchar(40) NOT NULL,
`lastname` varchar(40) NOT NULL,
`screenname` varchar(40) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(40) NOT NULL,
`created` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;


Ga nu in de dir .../projects/social/3_bouw staan en type
cake bake
De bake applicatie ziet dat het skeleton op zijn plaats staat en dat de database connectie in orde is. kies M om een model te maken.
Volg de aanwijzingen in de screenshot.

Als resultaat kun je de enorm complexe code bekijken die in de model dir is gegenereerd:



OK, niet echt indrukwekkend maar dat komt nog...

Geen opmerkingen: