Komma i gång med Zend-framework

  1. Få till en fungerade applikation för att logga in och lägga upp användare i Zend.
  2. Du skall veta vad MVC är.
  3. Du skall veta hur Zend fungerar i stort…

Att komma igång med Zend kan vara lite besvärligt. Jag tycker att ett bra sätt brukar vara att hitta en bra tutorial och följa den - problemet är bara att hitta en som är bra när man inte vet vad som är bra… :-/ Jag gjorde så att jag använde mig av Zends egen QuickStart - tänkte att eftersom de ligger bakom Zend så borde det vara ganska OK att börja med. Efter att ha läst den och fått den att fungera har jag gjort om den, förenklat och jobbat vidare… När man jobbar med Zend trycker jag att man kan ha stor nytta av en riktigt editor (en som har code completion), jag har valt att jobba i eclipse. Lättast är att hämta hem Eclipse klart för att utveckla i PHP istället för att lägga till allt som behövs. Här på park så hittar ni eclipse under programmerings menyn.

Jag tänkte att vi skall börja med att titta på mitt exempel och ha detta som utgångspunkt när jag går igenom hur man jobbar med Zend Framework. Det borde bara väldigt enkelt för er att få igång en fungerade kopia av min kod om ni följer stegen nedan.

  • Hämta denna fil: zfjf.tgz och spara den på er K: (zfjf står för Zend Framework Joakim Forsgren)
  • Logga in via putty
  • Ställ dig i din public_html
    cd $home/public_html)
  • Packa upp filen
    tar xzf zfjf.tgz
  • Skapa en länk till Zend på min användare.
    ln -s /home/pers/jf/Zend zfjf/library/Zend
  • Ändra i filen .htaccess så det stämmer för dig
    vi zfjf/public/.htaccess
  • Kopiera filen application.ini.ex till application.ini
    cp zfjf/application/configs/application.ini.ex zfjf/application/configs/application.ini
  • Ändra i application.ini så att det stämmer för dig
    vi zfjf/application/configs/application.ini
  • Sen för att kunna titta på mitt ex så förutsätts att ni har en tabell i er databas med följande utseende:
    CREATE TABLE IF NOT EXISTS `Users` (
      `UserID` int(11) unsigned NOT NULL auto_increment,
      `FirstName` varchar(255) NOT NULL,
      `LastName` varchar(255) NOT NULL,
      `Password` varchar(255) NOT NULL,
      `Email` varchar(255) NOT NULL,
      `Deleted` tinyint(1) NOT NULL,
      PRIMARY KEY  (`UserID`),
      UNIQUE KEY `Email` (`Email`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8

    Skulle det inte gå att ha detta namn på sin tabell så borde det vara lätt att fixa. Ändra i Default_Model_Users och sen vilken tabell man har i AuthController under loginAction. Detta borde räcka… har inte testat själv.

Lite special lösningar för speciella frågor…

//Test kod som funkar för mig:
 
<?php
class Default_Model_Users extends Zend_Db_Table {
	// Namn på tabellen
	protected $_name = 'Users';
 
	function test() {
		$query = "SELECT * FROM Users";
		// För att få det som ett objekt istället för som en array, kommentera bort raden för att se skillnaden
		$this->_db->setFetchMode(Zend_Db::FETCH_OBJ);
		$data = $this->_db->fetchall($query);
		return $data;
	}
 
	function test2() {
		$query = "SELECT count(*) as Number FROM Users";
		// För att få det som ett objekt istället för som en array, kommentera bort raden för att se skillnaden
		$this->_db->setFetchMode(Zend_Db::FETCH_OBJ);
		$data = $this->_db->fetchrow($query);
		return $data->Number;
	}
 
}