webForumDet fria alternativet

Blogga med Zend Framework - Del 2: Inuti en ZF-applikation

Webbutvecklingur Webbrelaterade artiklar

0 svar · 3 572 visningar · startad av jme

jmeMedlem sedan maj 20012 237 inlägg
#1

Nu börjar det roliga! Innan vi börjar med att studera själva koden så är det passande att först kika lite närmare på hur en ZF-applikation fungerar.

Vår applikation har en enda accesspunkt, index.html. All kommunikation med vår blogg sker genom denna fil. I index.html laddas in en bootstrap-fil (bootstrap.php) som:

• sätter väsentliga sökvägarna (set_include_path(...) ). Vi måste berätta för vår blogg var t.ex. Zend Framework -biblioteket och andra klasserna kan hittas.
• skapar en ny instans av Zend_Controller_Front (front controller)
• laddar in diverse inställningar (sköts av klassen Initialiazer)
• processerar HTTP-förfrågan (dispatch() ).

I klassen Initializer finns följande metoder:

• initControllers()
• initDb()
• initPhpConfigs()
• initRoutes()
• initView()
• routeStartup()

Vi måste även sätta sökvägarna till controller-katalogerna (se initControllers() ):

$this->_front->addControllerDirectory($this->_root . '/application/blog/controllers', 'blog');

$this->_front->addControllerDirectory($this->_root . '/application/login/controllers', 'login');

Metoden initPhpConfigs() skapar ett Zend_Config-objekt av de inställningar som finns i filen settings.php. Vår blogg har inte så många inställningar så det enda som finns i settings.php är inställningarna för databasuppkopplingen. Här är det viktigt att type, host, username och password har korrekta värden. Variabeln type låter oss välja vilken sorts databas vi vill använda. I detta fall har vi valt pdo_mysql som bestämt säger oss att MySql skall användas!

Metoden initDb() skapar ett Zend_Db-objekt som vi kan använda för att kommunicera med databasen. Den använder sig utav det Zend_Config-objekt som vi tidigare nämnde. Vi väljer också att ha detta Zend_Db_objekt som default genom att använda metoden Zend_Db_Table_Abstract::setDefaultAdapter(...);

Senare i koden, när vi behöver en databasuppkoppling, kan vi mycket enkelt komma åt en genom att kalla Zend_Db_Table::getDefaultAdapter(). Nu slipper vi skapa en egen wrapper-klass, som gör samma sak åt oss!
Om du tycker att Zend_Db_Table::getDefaultAdapter() är tok för långt så kan du göra en wrapper-klass:

class Db 
{
	public static function connection()
	{
		return Zend_Db_Table::getDefaultAdapter();
	}
}

Då kan du använda

Db::connection()

istället för

Zend_Db_Table::getDefaultAdapter()

130 ms totalt · 3 externa anrop · v20260731065814-full.a2ca460b
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)