Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Pierwsze kroki z Zend Framework

Baza Danych

Kiedy oddzieliliśmy już kontrolę aplikacji (kod akcji) od kodu odpowiedzialnego za wyświetlenie tej akcji (widok-szablon), nadszedł czas na zabranie się za model naszej aplikacji. Pamietajmy, że model jest to cześć aplikacji, która odpowiada za działanie i logikę strony (business rules/logic), a w naszym przypadku model operuje na bazie danych. Do tego zadania użyjemy klasy Zend_Db_Table, która jest odpowiada za szukanie, dodawanie oraz aktualizowanie danych z tablicy w bazie danych.

Konfiguracja

Aby użyć Zend_Db_Table, musimy wskazać jaką bazę danych używamy wraz z nazwą użytkownika i hasłem. Danych tych oczywiście wolimy nie podawać wprost w kodzie aplikcji, ale użyć do tego celu pliku konfiguracyjnego.

Zend Framework udostępnia klasę Zend_Config, pozwalającą na elastyczny dostęp do plików konfiguracyjnych. Jak do tej pory, możliwymi formatami plików konfiguracyjnych są: tablica PHP (array), pliki INI oraz pliki XML. W naszym przykładzie użyjemy formatu INI:

[general]db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = rob
db.config.password = 123456
db.config.dbname = zftest

Oczywiście powinieneś użyć wartości username, password i dbname, które są w Twoim systemie.

Użycie Zend_Config jest bardzo proste:

$config = new Zend_Config_Ini('config.ini', 'section');

Zauważmy, że w tym przypadku Zend_Config_Ini ładuje jedną sekcję z pliku INI, zamiast ładować wszystkie. Można także dodać informację, by załadowane zostały sekcje dodatkowe. Zend_Config traktuje znak kropki ( .) w parametrze jako separator hierarchii pozwalając na grupowanie powiązanych wartości konfiguracyjnych. W naszym pliku config.ini adres, użytkownik, hasło oraz nazwa bazy danych są zgrupowane pod $config->db->config.

Załadujemy teraz nasz plik konfiguracyjny w pliku startowym ( index.php):

Interesująca nas cześć pliku index.php wygląda następująco:

...
Zend::loadClass('Zend_Controller_Front');
Zend::loadClass('Zend_Controller_RewriteRouter');
Zend::loadClass('Zend_View');
Zend::loadClass('Zend_Config_Ini');
// Ładuje Konfiguracje
$config = new Zend_Config_Ini('./application/config.ini', 'general');
Zend::register('config', $config);
// Rejestrowanie widoku, który będziemy używać
$view = new Zend_View();$view->setScriptPath('./application/views');
...

Zmiany, jakich należy dokonać w index.php zostały podane czcionką pogrubioną. Teraz ładujemy klasę Zend_Config_Ini wraz z sekcją 'general' z pliku application/config.ini do zmiennej $config.

Tworzenie Zend_Db_Table

Aby użyć Zend_Db_Table, powinniśmy wskazać dane konfiguracyjne, które załadowaliśmy. Do tego zadania stworzymy obiekt klasy Zend_Db i zarejestrujemy ją statyczną funkcją Zend_Db_Table::setDefaultAdapter(). Wykonujemy to wszystko w pliku index.php:

...
Zend::loadClass('Zend_Config');
Zend::loadClass('Zend_Config_Ini');
Zend::loadClass('Zend_Db');
Zend::loadClass('Zend_Db_Table');
// Ładuj konfigurację
$config = Zend_Config_Ini('./application/config.ini', 'general');
Zend::register('config', $config);
// baza danych
$db = Zend_Db::factory($config->db->adapter,$config->db->config->asArray());
Zend_Db_Table::setDefaultAdapter($db);
// Rejestruj widok, którego będziemy używać
$view = new Zend_View();
$view->setScriptPath('./application/views');
Zend::register('view', $view);
...
Tworzenie Tabel

Użyjemy bazy danych MySQL w ten sposób, by kod SQL tworzący naszą bazę danych wyglądał następująco:

CREATE TABLE album (
id int(11) NOT NULL auto_increment,
artist varchar(100) NOT NULL,
title varchar(100) NOT NULL,
PRIMARY KEY (id)
)

Wykonajmy te polecenia SQL w dowolnym kliencie MySQL, np. phpMyAdmin, bądź w standardowym wierszu poleceń MySQL-a.

Wprowadzanie Testowych Albumów

Wprowadźmy kilka albumów do tabeli, by można było rozpocząć testowanie odczytu naszej strony:

INSERT INTO album (artist, title)
VALUES
('Undiscovered', 'James Morrison'),
('Eyes Open', 'Snow Patrol');
Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (7)
Proponuję alternatywę
Wtorek 09 Luty 2010 1:23:49 pm - siema1980

Proponuję zapoznać się z moim kursem na temat ZF, jest to blog na temat podstaw i myślę, że wszystkim początkującym się przyda - szczególnie tym którzy nie wiedzą jak w ogóle postawić pierwsze kroki w używaniu tej technologii.

http://zend-framework.web-portals.pl

Zapraszam serdecznie.

Zmiany w stosunku do ZF 1.0
Sobota 07 Lipiec 2007 11:41:02 am - elem84

$config->db->config->asArray() ta część jest nieaktualna dla wersji 1.0 należy ją zastąpić $config->db->config->toArray()

Zend
Poniedziałek 26 Luty 2007 10:15:26 am - mrm

czy na pewno to działa ?, stworzyłem odpowiedni pliki, katalogi, skopiowałem cały kod, i nie działa...;/, wydaję mi się że może być 5 przyczyn takiego stanu rzeczy:
1 - źle skopiowałem kod, przeoczyłem cos...
2- mam coś nie tak z serwerem
3- korzystam z wersji 0.8
4- to po prostu nie działa
5 -inne

Szkoła kononowicza
Poniedziałek 29 Styczeń 2007 4:03:22 am - MARIO77 <manius162_at_wp.pl>

cytat:
"Zend Framework rezerwuje również domyślny controller i nie powinno być dla nas niespodzianką, że też się nazywa się on index."

Szkoła KONONOWICZA :D

Wspólny kod HTML
Sobota 16 Grudzień 2006 11:52:21 pm - vallthore

Wspólny kod HTML jest chyba trochę ucięty, a dokładnie początek strony 10 z oryginalnego pdf'a

hehe
Piątek 24 Listopad 2006 4:29:49 pm - sabistik <wiktorski_at_poczta.php.pl>

hehe, ano dobre, dobre. Już poprawiam.

tworzymy widok
Środa 22 Listopad 2006 1:48:14 am - orideith

cytuje ..w związku z czym nie ma seksu używać akcji. hmm seks i zend :)
Nie mogłem się powstrzymac.

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2022 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System