SlideShare a Scribd company logo
1 of 40
PHP DAY @ Unicef Lab of Kosovo
Flamur Mavraj Creative designer and web developer @oxodesign
Gjerat bazike Cka eshte PHP? ,[object Object]
PHP është gjuhë skriptueste qe egzekutohet ne server.
PHP përkrahë shumë baza të të dhënave (MySQL, PostgreSQL, Informix, Oracle, Sybase...)
PHP është një softuer me burim të hapur
PHP është falas për shkarkim dhe për përdorim,[object Object]
PHP punon me shumicën e serverëve (Apache, IIS,...)
PHP është falas
PHP është lehtë për tu mësuar dhe ka komunitet te gjere ,[object Object]
Gjerat bazike Variablat Variablat përdorën për ruajtjën e vlerave, si tekst, numrat dhe gjerat tjera. Kur një variabël caktohet atëherë ajo mund të përdoret shumë herë në atë skript. Të gjitha variablat në PHP fillojnë me simbolin $ (dollarit). <?php   $var = “Kjo eshte nje variable”; ?> <?php $123var = “Kjo nuk eshte valide” ?>
Gjerat bazike Operatoret Operatoret matmatikor (+ - * /), lidhes ( , . ) dhe identifikues ( ! == === && || ) <?php   $nr = 2; $nr = $nr + 2; // $nr += 2; echo $nr; ?> <?php $nr1 = “2” Var_dump($nr == $nr1); // true var_dump($nr === $nr1); // false ?>
Gjerat bazike Operatoret <?php   Class  Test {} Class TestInstanceOf extends Test{}  ?> <?php $test1 = new Test(); $test2 = new TestInstanceOf(); Var_dump($test1 instanceof Test);  // true var_dump($test2 instanceof Test);  // true ?>
OOP Çka është OOP? Programim i orientuar ne objekte te mundëson kodimin ne një meny me te lehtë dhe praktike, gjithashtu te lehtëson mirëmbajte kodit. Kjo teknik programimi na mundëson ndarjen e  kodimit ne pjesë te ndryshme te funksioneve, që na lehtëson lexushëmërin dhe kuptueshmërinë, njëherit na mundëson re-përdorimin ne programe tjera dhe hap mundësin për përdorje te projektimit te modeleve (design patterns)! Shumë ngatërrojnë definimin mbes një objekti dhe  klasës (class)! Një klasë është një recetë qe përshkruan se çka një objekt është, ka dhe bën.  Kurse objekti është vetë instanca e asaj klase.
OOP Pse OOP? Lexueshmeri dhe kuptueshmëri te kodit Mirembajtje me te leht. Re-perdorimin e kodi. Implementimi dhe interfaces Zherimi (Extensibility)
OOP Shembull baze <?php /** * Kjo është klasa */ class Empirio_Customer{ 	protected $_name; 	public function getName(){ 		return $this->_name; 	} } <?php /** * Kurse një objekt është vete instanca e asaj "klase (class)" */ $object = new Empirio_Object();
OOP Dukurit (metodat) e nje klase (class) Public ,[object Object],Protected ,[object Object],Private ,[object Object],[object Object]
OOP Çka është objekt interface? Objekt interface te lejon te vendosesh rregullat për implementimin e një objekti dhe cilat metoda një objekt duhet ti zbatoj dhe t'u përmbahet! Te gjitha metodat e deklaruara ne një interface duhen te jen publike dhe objekti qe implementon një interface duhet te implementoj te njëjtat metoda përndryshe një gabim fatal do te shfaqet! <?php Interface Empirio_Customers{ 	public function getName(){} } <?php Class Empirio_Customer implement Empirio_Customers{ 	public function getName(){ 		return ‘name ...’; 	} }
OOP Pse te përdorim objekt interface? Thjesht sepse ti udhëzon te tjerët qe te implementojn metodat e duhura ne modelin e tyre!
Model projektimi (design patterns) Cka eshte model projektimi? Është një zgjedhje e përgjithshme për një problem te zakonshëm qe ndodh ne projektimin e programeve. Një model nuk është i përkryer por thjesht është një përshkrim i problemit dhe si te zgjedhësh atë, e kur sesi një zgjedhje e gatshme qe ta kopjoni direkt ne kodin tuaj!
Model projektimi (design patterns) Christopher Alexander Çdo model përshkruan një problem i cili shfaqet shpesh, dhe pastaj përshkruan zgjidhjen për këtë problem, në mënyrë të tillë që ju mund të përdorni këtë zgjidhje një milion herë, pa e bere te njejten dy her.
Model projektimi (design patterns) Subject dhe Observer pattern Subjekti mban nje list te observers (vezhguesit) dhe njofton ata ateher kur ka ndryshime ne ta.
Model projektimi (design patterns) Factory pattern Percakton nje interface per krijimin e objekteve. abstract class Plane{ static public function getInstance($type){ 		return new $type; 	} } class Boeing extends Plane {} class Airbus extends Plane {} <?php $a = Plane::getInstance('Boeing'); $b = Plane::getInstance('Airbus');
Model projektimi (design patterns) Singelton pattern Perkufizon thirrjen e nje objekti vetem nje her gjat ekzekutimit. class Singleton{ 	static protected $instance; 	static public function getInstance(){ 	if (is_null(self::$instance)){ 	self::$instance = new Self(); 	} 	return self::$instance; 	} } <?php $singleton = Singleton::getInstance(); $singleton->...
Model projektimi (design patterns) Tjera patterns Registry patterns Adapter patterns
Model projektimi (design patterns) MVC (Model-View-Controller) Modeli perfaqeson te dhenat View shfaq te dhenat e modelit Controller, trajton ngjarjet (events) dhe ndryshon modelin sipas nevojes.
Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
Model projektimi (design patterns) MVC (Model-View-Controller) Klienti View HTTP Request HTTP Response Model Serveri Controller
Zend Framework Pse zend framework? I bazuar ne komponente Implementon MVC I thjesht per tu perdorur dhe i orientuar ne objekte I testuar mire dhe robust Leht per modifikim duke zgjeruar(extending) komponentet
Symfony2 Pse ta zgjedhni Symfony2? Cdo gje konfigurohet Cdo gje eshte e bazuar ne plugins (bundles) Komponente te gatshme si: DI, Routing, Template, Console etj... Support vetem PHP 5.3 dhe me lart Integruar mire me Doctrine 2 Leht per tu testuar me PHPUnit dhe krijuar teste ne te.
Symfony2 Si te krijojm nje plugin (bundle)? Shkarko Symfony2 nga faqja zyrtare (www.symfony.com) Vendos folderat ne vendin qe ti deshiron, tek root ne serverin tend. Per ta testuar se a keni shkarkuar verzionin e duhur dhe qe cdo gje eshte ne rregull shenoni kete komand nga terminali/cmd: php app/console --version dhe shtypni enter, rezultati do del dicka si i ketille: Symfony version 2.0.3 – app/dev/debug Shkruaj komanden: php app/console generate:bundle dhe shtyp enter tek bundle namespace shkruaj nje namespace tenden, ne kete rast une do perdori ‘Empirio’ dhe do krijojm nje blog keshtu qe do e shkruajm keshtu: Empirio/BlogBundle. Mos harroni qe emri duhet gjithemon te perfundoj me nje ‘Bundle’. Opcionet tjera mund ti leni default, keshtu qe vetem shtypni enter. Nqs shikoni ne folder <src> ateher aty sapo u krijua nje folder me emrin e namespaces dhe nen te u krijua nje folder tjeter me emrin BlogBundle
Symfony2 Si te krijojm nje doctrine entity? Prap nga terminali shkruaj komanden php app/console gen:doctrine:entity dhe shtyp enter. Tek opcioni i pare “Entity shourtcut name” e shkruan emrin e namespace qe e krijuam me heret ne kete menyr ‘EmpirioBlogBundle:Post’ dhe shtyp enter, post eshte emri i entities. Shtyp enter ne metoden e preferuar  qe defualt eshte ‘annotations’ Te dhenat e kesaj entity, ne rastin tim do krijoj 3 fields (title, body dhe published_at), title do te jete nje string, body do jete text dhe published_at do jete datetime format. Krijo keto te dhena dhe shtyp enter per cdo te dhene, kur keni perfunduar shtypni prap enter qe te konfirmoni vazhdimin e me tejshem. Lej default opcionet tjera.
Symfony2 Krijimi i db dhe tabelave nga entity? Nga terminali shkruaj komanden php app/console doctrine:database:create per te krijuar databazen, emrin dhe te dhanat e databazes mund ta nderroni tek folderi <app/config/paramters.ini>. Tash le ta krijojm tabelen ne baze te entities qe krijuam me heret, kete e bejm duke shkruar kete komand: php app/console doctrine:schema:update --force. Dhe nqs shikoni ne databazen tuaj permes PhpMyAdmin apo programit tuaj qe perdorni per menagjimin e db’s ateher do te mund te shikoni qe eshte krijuar nje databaze e re dhe ne te eshte krujuar nje tabel me emrin “Post”.
Symfony2 Si te krijojm CRUD (interakcion) me db? CRUD eshte shkurtimes per Create, Read, Update dhe Delete, dmth. Jan nje set me funksione per interakcion me databazen. Symfony ka nje komand e cila na mundeson krijimin e ketyre funksioneve nga terminali bazuar ne nje Entity nga doctrine. Kjo bahet duke e shkruar ne terminal kete komand: php app/console doctrine:generate:cruddhe shtypni enter. Shkruani emrin e entities ne rastin tone ‘EmpirioBlogBundle:Post’ dhe shtyp enter Nqs deshironi te krijoni funksionin per Write (Create) ateher ne opcionin e pare mbasi qe keni shkruar emrin sheno ‘y’ dhe tjerat vetem lej default duke i akseptuar me enter.
Symfony2 Testoni programin Hap shfletuesin dhe shkruaje adresen e serverit tend, nqs e keni serverin ne te njejtin kompjuter ateher shkruaj http://localhost/symfony2/web/app_dev.php/post dhe do e shikoni se si duket. Adresa me lart mvaret krejt nga konfigurimi juaj keshtu qe mund te ndryshoj. Kaq sa i perket Symfony2

More Related Content

Similar to PHP Day at UNICEF Lab of Kosova

Ndërtimi i bazës së të dhënave në programin Access
Ndërtimi i bazës së të dhënave në programin AccessNdërtimi i bazës së të dhënave në programin Access
Ndërtimi i bazës së të dhënave në programin AccessRexhino Kovaci
 
Kopja rezervë e bazës së të dhënave
Kopja rezervë e bazës së të dhënaveKopja rezervë e bazës së të dhënave
Kopja rezervë e bazës së të dhënaveAtdhe Buja
 
Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1
Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1
Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1Rexhino Kovaci
 
Detyrë Kursi Inteligjenca Artificiale ne animim.docx
Detyrë Kursi Inteligjenca Artificiale ne animim.docxDetyrë Kursi Inteligjenca Artificiale ne animim.docx
Detyrë Kursi Inteligjenca Artificiale ne animim.docxIng Ardit Novruzi
 
Deyrat e portofolit te Tik me Zgjedhje
Deyrat e portofolit te Tik me Zgjedhje Deyrat e portofolit te Tik me Zgjedhje
Deyrat e portofolit te Tik me Zgjedhje Rexhino Kovaci
 
Microsoft Access
Microsoft AccessMicrosoft Access
Microsoft AccessAjla Hasani
 
Enkel vela nje krahasim midis arkitekturave te driver
Enkel vela nje krahasim midis arkitekturave te driverEnkel vela nje krahasim midis arkitekturave te driver
Enkel vela nje krahasim midis arkitekturave te driverEnkel Vela
 
C++ permbledhje detyrash-v-neziri-r-dervishi-fiek
C++ permbledhje detyrash-v-neziri-r-dervishi-fiekC++ permbledhje detyrash-v-neziri-r-dervishi-fiek
C++ permbledhje detyrash-v-neziri-r-dervishi-fiekXhelal Bislimi
 
Visual basic leksionet e mia
Visual basic leksionet e miaVisual basic leksionet e mia
Visual basic leksionet e miaMarkelian Laho
 
Teknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton Nuha
Teknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton NuhaTeknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton Nuha
Teknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton NuhaDriton Nuha
 
Punim seminarik tik
Punim seminarik tikPunim seminarik tik
Punim seminarik tikBJashari
 
Portofoli i tik me zgjedhje 3
Portofoli i tik me zgjedhje 3Portofoli i tik me zgjedhje 3
Portofoli i tik me zgjedhje 3Rexhino Kovaci
 

Similar to PHP Day at UNICEF Lab of Kosova (20)

Ndërtimi i bazës së të dhënave në programin Access
Ndërtimi i bazës së të dhënave në programin AccessNdërtimi i bazës së të dhënave në programin Access
Ndërtimi i bazës së të dhënave në programin Access
 
Projekti
ProjektiProjekti
Projekti
 
1. network fundamentals
1. network fundamentals1. network fundamentals
1. network fundamentals
 
Kopja rezervë e bazës së të dhënave
Kopja rezervë e bazës së të dhënaveKopja rezervë e bazës së të dhënave
Kopja rezervë e bazës së të dhënave
 
Programim - Shqip
Programim - ShqipProgramim - Shqip
Programim - Shqip
 
Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1
Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1
Deyrat e portofolit te Tik me Zgjedhje 12 Semestri i 1
 
Project TIK
Project TIKProject TIK
Project TIK
 
Java Script (shqip)
Java Script (shqip) Java Script (shqip)
Java Script (shqip)
 
Detyrë Kursi Inteligjenca Artificiale ne animim.docx
Detyrë Kursi Inteligjenca Artificiale ne animim.docxDetyrë Kursi Inteligjenca Artificiale ne animim.docx
Detyrë Kursi Inteligjenca Artificiale ne animim.docx
 
Deyrat e portofolit te Tik me Zgjedhje
Deyrat e portofolit te Tik me Zgjedhje Deyrat e portofolit te Tik me Zgjedhje
Deyrat e portofolit te Tik me Zgjedhje
 
Arrays in Java
Arrays in JavaArrays in Java
Arrays in Java
 
Softwaret
SoftwaretSoftwaret
Softwaret
 
Ushtrimi 1
Ushtrimi 1Ushtrimi 1
Ushtrimi 1
 
Microsoft Access
Microsoft AccessMicrosoft Access
Microsoft Access
 
Enkel vela nje krahasim midis arkitekturave te driver
Enkel vela nje krahasim midis arkitekturave te driverEnkel vela nje krahasim midis arkitekturave te driver
Enkel vela nje krahasim midis arkitekturave te driver
 
C++ permbledhje detyrash-v-neziri-r-dervishi-fiek
C++ permbledhje detyrash-v-neziri-r-dervishi-fiekC++ permbledhje detyrash-v-neziri-r-dervishi-fiek
C++ permbledhje detyrash-v-neziri-r-dervishi-fiek
 
Visual basic leksionet e mia
Visual basic leksionet e miaVisual basic leksionet e mia
Visual basic leksionet e mia
 
Teknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton Nuha
Teknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton NuhaTeknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton Nuha
Teknologji e informimit dhe komunikimit (TIK) Punim Seminarik Driton Nuha
 
Punim seminarik tik
Punim seminarik tikPunim seminarik tik
Punim seminarik tik
 
Portofoli i tik me zgjedhje 3
Portofoli i tik me zgjedhje 3Portofoli i tik me zgjedhje 3
Portofoli i tik me zgjedhje 3
 

PHP Day at UNICEF Lab of Kosova

  • 1. PHP DAY @ Unicef Lab of Kosovo
  • 2. Flamur Mavraj Creative designer and web developer @oxodesign
  • 3.
  • 4. PHP është gjuhë skriptueste qe egzekutohet ne server.
  • 5. PHP përkrahë shumë baza të të dhënave (MySQL, PostgreSQL, Informix, Oracle, Sybase...)
  • 6. PHP është një softuer me burim të hapur
  • 7.
  • 8. PHP punon me shumicën e serverëve (Apache, IIS,...)
  • 10.
  • 11. Gjerat bazike Variablat Variablat përdorën për ruajtjën e vlerave, si tekst, numrat dhe gjerat tjera. Kur një variabël caktohet atëherë ajo mund të përdoret shumë herë në atë skript. Të gjitha variablat në PHP fillojnë me simbolin $ (dollarit). <?php $var = “Kjo eshte nje variable”; ?> <?php $123var = “Kjo nuk eshte valide” ?>
  • 12. Gjerat bazike Operatoret Operatoret matmatikor (+ - * /), lidhes ( , . ) dhe identifikues ( ! == === && || ) <?php $nr = 2; $nr = $nr + 2; // $nr += 2; echo $nr; ?> <?php $nr1 = “2” Var_dump($nr == $nr1); // true var_dump($nr === $nr1); // false ?>
  • 13. Gjerat bazike Operatoret <?php Class Test {} Class TestInstanceOf extends Test{} ?> <?php $test1 = new Test(); $test2 = new TestInstanceOf(); Var_dump($test1 instanceof Test); // true var_dump($test2 instanceof Test); // true ?>
  • 14. OOP Çka është OOP? Programim i orientuar ne objekte te mundëson kodimin ne një meny me te lehtë dhe praktike, gjithashtu te lehtëson mirëmbajte kodit. Kjo teknik programimi na mundëson ndarjen e kodimit ne pjesë te ndryshme te funksioneve, që na lehtëson lexushëmërin dhe kuptueshmërinë, njëherit na mundëson re-përdorimin ne programe tjera dhe hap mundësin për përdorje te projektimit te modeleve (design patterns)! Shumë ngatërrojnë definimin mbes një objekti dhe klasës (class)! Një klasë është një recetë qe përshkruan se çka një objekt është, ka dhe bën. Kurse objekti është vetë instanca e asaj klase.
  • 15. OOP Pse OOP? Lexueshmeri dhe kuptueshmëri te kodit Mirembajtje me te leht. Re-perdorimin e kodi. Implementimi dhe interfaces Zherimi (Extensibility)
  • 16. OOP Shembull baze <?php /** * Kjo është klasa */ class Empirio_Customer{ protected $_name; public function getName(){ return $this->_name; } } <?php /** * Kurse një objekt është vete instanca e asaj "klase (class)" */ $object = new Empirio_Object();
  • 17.
  • 18. OOP Çka është objekt interface? Objekt interface te lejon te vendosesh rregullat për implementimin e një objekti dhe cilat metoda një objekt duhet ti zbatoj dhe t'u përmbahet! Te gjitha metodat e deklaruara ne një interface duhen te jen publike dhe objekti qe implementon një interface duhet te implementoj te njëjtat metoda përndryshe një gabim fatal do te shfaqet! <?php Interface Empirio_Customers{ public function getName(){} } <?php Class Empirio_Customer implement Empirio_Customers{ public function getName(){ return ‘name ...’; } }
  • 19. OOP Pse te përdorim objekt interface? Thjesht sepse ti udhëzon te tjerët qe te implementojn metodat e duhura ne modelin e tyre!
  • 20. Model projektimi (design patterns) Cka eshte model projektimi? Është një zgjedhje e përgjithshme për një problem te zakonshëm qe ndodh ne projektimin e programeve. Një model nuk është i përkryer por thjesht është një përshkrim i problemit dhe si te zgjedhësh atë, e kur sesi një zgjedhje e gatshme qe ta kopjoni direkt ne kodin tuaj!
  • 21. Model projektimi (design patterns) Christopher Alexander Çdo model përshkruan një problem i cili shfaqet shpesh, dhe pastaj përshkruan zgjidhjen për këtë problem, në mënyrë të tillë që ju mund të përdorni këtë zgjidhje një milion herë, pa e bere te njejten dy her.
  • 22. Model projektimi (design patterns) Subject dhe Observer pattern Subjekti mban nje list te observers (vezhguesit) dhe njofton ata ateher kur ka ndryshime ne ta.
  • 23. Model projektimi (design patterns) Factory pattern Percakton nje interface per krijimin e objekteve. abstract class Plane{ static public function getInstance($type){ return new $type; } } class Boeing extends Plane {} class Airbus extends Plane {} <?php $a = Plane::getInstance('Boeing'); $b = Plane::getInstance('Airbus');
  • 24. Model projektimi (design patterns) Singelton pattern Perkufizon thirrjen e nje objekti vetem nje her gjat ekzekutimit. class Singleton{ static protected $instance; static public function getInstance(){ if (is_null(self::$instance)){ self::$instance = new Self(); } return self::$instance; } } <?php $singleton = Singleton::getInstance(); $singleton->...
  • 25. Model projektimi (design patterns) Tjera patterns Registry patterns Adapter patterns
  • 26. Model projektimi (design patterns) MVC (Model-View-Controller) Modeli perfaqeson te dhenat View shfaq te dhenat e modelit Controller, trajton ngjarjet (events) dhe ndryshon modelin sipas nevojes.
  • 27. Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
  • 28. Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
  • 29. Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
  • 30. Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
  • 31. Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
  • 32. Model projektimi (design patterns) MVC (Model-View-Controller) Controller View Model
  • 33. Model projektimi (design patterns) MVC (Model-View-Controller) Klienti View HTTP Request HTTP Response Model Serveri Controller
  • 34. Zend Framework Pse zend framework? I bazuar ne komponente Implementon MVC I thjesht per tu perdorur dhe i orientuar ne objekte I testuar mire dhe robust Leht per modifikim duke zgjeruar(extending) komponentet
  • 35. Symfony2 Pse ta zgjedhni Symfony2? Cdo gje konfigurohet Cdo gje eshte e bazuar ne plugins (bundles) Komponente te gatshme si: DI, Routing, Template, Console etj... Support vetem PHP 5.3 dhe me lart Integruar mire me Doctrine 2 Leht per tu testuar me PHPUnit dhe krijuar teste ne te.
  • 36. Symfony2 Si te krijojm nje plugin (bundle)? Shkarko Symfony2 nga faqja zyrtare (www.symfony.com) Vendos folderat ne vendin qe ti deshiron, tek root ne serverin tend. Per ta testuar se a keni shkarkuar verzionin e duhur dhe qe cdo gje eshte ne rregull shenoni kete komand nga terminali/cmd: php app/console --version dhe shtypni enter, rezultati do del dicka si i ketille: Symfony version 2.0.3 – app/dev/debug Shkruaj komanden: php app/console generate:bundle dhe shtyp enter tek bundle namespace shkruaj nje namespace tenden, ne kete rast une do perdori ‘Empirio’ dhe do krijojm nje blog keshtu qe do e shkruajm keshtu: Empirio/BlogBundle. Mos harroni qe emri duhet gjithemon te perfundoj me nje ‘Bundle’. Opcionet tjera mund ti leni default, keshtu qe vetem shtypni enter. Nqs shikoni ne folder <src> ateher aty sapo u krijua nje folder me emrin e namespaces dhe nen te u krijua nje folder tjeter me emrin BlogBundle
  • 37. Symfony2 Si te krijojm nje doctrine entity? Prap nga terminali shkruaj komanden php app/console gen:doctrine:entity dhe shtyp enter. Tek opcioni i pare “Entity shourtcut name” e shkruan emrin e namespace qe e krijuam me heret ne kete menyr ‘EmpirioBlogBundle:Post’ dhe shtyp enter, post eshte emri i entities. Shtyp enter ne metoden e preferuar qe defualt eshte ‘annotations’ Te dhenat e kesaj entity, ne rastin tim do krijoj 3 fields (title, body dhe published_at), title do te jete nje string, body do jete text dhe published_at do jete datetime format. Krijo keto te dhena dhe shtyp enter per cdo te dhene, kur keni perfunduar shtypni prap enter qe te konfirmoni vazhdimin e me tejshem. Lej default opcionet tjera.
  • 38. Symfony2 Krijimi i db dhe tabelave nga entity? Nga terminali shkruaj komanden php app/console doctrine:database:create per te krijuar databazen, emrin dhe te dhanat e databazes mund ta nderroni tek folderi <app/config/paramters.ini>. Tash le ta krijojm tabelen ne baze te entities qe krijuam me heret, kete e bejm duke shkruar kete komand: php app/console doctrine:schema:update --force. Dhe nqs shikoni ne databazen tuaj permes PhpMyAdmin apo programit tuaj qe perdorni per menagjimin e db’s ateher do te mund te shikoni qe eshte krijuar nje databaze e re dhe ne te eshte krujuar nje tabel me emrin “Post”.
  • 39. Symfony2 Si te krijojm CRUD (interakcion) me db? CRUD eshte shkurtimes per Create, Read, Update dhe Delete, dmth. Jan nje set me funksione per interakcion me databazen. Symfony ka nje komand e cila na mundeson krijimin e ketyre funksioneve nga terminali bazuar ne nje Entity nga doctrine. Kjo bahet duke e shkruar ne terminal kete komand: php app/console doctrine:generate:cruddhe shtypni enter. Shkruani emrin e entities ne rastin tone ‘EmpirioBlogBundle:Post’ dhe shtyp enter Nqs deshironi te krijoni funksionin per Write (Create) ateher ne opcionin e pare mbasi qe keni shkruar emrin sheno ‘y’ dhe tjerat vetem lej default duke i akseptuar me enter.
  • 40. Symfony2 Testoni programin Hap shfletuesin dhe shkruaje adresen e serverit tend, nqs e keni serverin ne te njejtin kompjuter ateher shkruaj http://localhost/symfony2/web/app_dev.php/post dhe do e shikoni se si duket. Adresa me lart mvaret krejt nga konfigurimi juaj keshtu qe mund te ndryshoj. Kaq sa i perket Symfony2
  • 41. Databazat Një databazë është një koleksion i organizuar të dhënash, qe zakonisht ruhet ne form digjitale! Organizimi i te dhenave ruhet ne menyr relevante me aspektin me realitetin. Gjithesesi termi “databazë” përdoret vetem ateher kur te dhenat kan nje cilesi te duhur. Cilesija mbatet permes, saktesis, disponueshmërisë, përdorshmërisë, dhe elasticitetit. Serveri
  • 42. Databazat Llojet e databazave Databazat relacionale, si MySQL, Oracle, SQLServer Documentbased db’s CouchDB dhe MongoDB Graph db’s, Neo4J dhe OrientDB Serveri
  • 43. Databazat Documentbased DB Struktur semantike (Mendo JSON) Verzion i dokumentave Map/Reduce queries Shembull se kur te perdoni kete lloj te db’s eshte nje blog me tags dhe komente, kur cdo post eshte nje dokument dhe nen te ruhen tags si arrays. Serveri
  • 44. Databazat Graph DB Inspiruar nga teoria per grafe matmatikore G=(V,E) Te dhenat strukturohen ne model Mundesi dhe lehtesi ne scalability Relacione permes kendeve (edges) dhe nyjeve (nodes) Serveri Shembull se kur te perdoni kete lloj te db’s eshte nje nje medium social si psh. Facebook apo twitter qe nevoitet relacione mes struktures.