PHP Ohjelmointikehykset
Total Page:16
File Type:pdf, Size:1020Kb
PHP-POHJAISET OHJELMOINTIKEHYKSET Antti Humalamäki Opinnäytetyö Marraskuu 2011 Ohjelmistotekniikka Tekniikan ja liikenteen ala OPINNÄYTETYÖN KUVAILULEHTI Tekijä(t) Julkaisun laji Päivämäärä HUMALAMÄKI, Antti Opinnäytetyö 30.11.2011 Sivumäärä Julkaisun kieli 77 Suomi Luottamuksellisuus Verkkojulkaisulupa myönnetty ( ) saakka ( X ) Työn nimi PHP-POHJAISET OHJELMOINTIKEHYKSET Koulutusohjelma Ohjelmistotekniikka Työn ohjaaja(t) PELTOMÄKI, Juha Toimeksiantaja(t) Sysdrone Oy Tiivistelmä Opinnäytetyön tavoitteena oli tehdä Sysdrone Oy:lle vertailevaa tutkimusta PHP-kielellä toteutettu- jen avoimen lähdekoodin ohjelmointikehyksistä. Työn motivaationa oli löytää työn toimeksiantajan tulevaisuuden projekteja varten sellaisia sovelluskehitysalustoja joista löytyvät valmiina perustoi- minnallisuudet kuten käyttäjienhallinta, autentikaatio ja lokalisointi, samalla myös huomioiden sellaiset ominaisuudet kuten kehityksen helppous ja testattavuus. Lisäksi kiinnitettiin huomiota mahdollisiin sisällönhallintaominaisuuksiin, dokumentaation tasoon ja käyttäjäyhteisön aktiivisuu- teen. Tutkittaviksi järjestelmiksi rajautuivat varsinaiset ohjelmointikehykset Symfony, Zend ja Yii sekä sisällönhallintajärjestelmät Joomla ja Drupal. Kaikkia ohjelmointikehyksiä ja sisällönhallintajärjes- telmiä tutkittiin empiirisin menetelmin virtuaalikoneympäristössä, mutta myös kirjallisuudesta tie- toa hakien. Kaikista tutkituista kehysjärjestelmistä kerättiin laajasti aineistoa, josta on hyötyä toimeksiantajan tulevaisuuden projektien suunnittelussa. Molempien ohjelmointikehysten ja sisällönhallintajärjes- telmien sisällyttäminen samaan tutkimukseen, aiheutti vaikeuksia niiden väliselle vertailulle. Järjes- telmät pisteytettiin toimeksiantajan määrittelemien vaatimusten mukaisesti. Yksittäistä parasta järjestelmää ei kuitenkaan voida nimetä, sillä yksittäisen ohjelmistoprojektin vaatimukset vaikutta- vat aina siihen, millainen kehysjärjestelmä kannattaa valita. Avainsanat (asiasanat) Avoin lähdekoodi, Ohjelmointikehys, PHP, Drupal, Joomla, Symfony, Zend, Yii Muut tiedot DESCRIPTION Author(s) Type of publication Date HUMALAMÄKI, Antti Bachelor´s Thesis 30112011 Pages Language 77 Finnish Confidential Permission for web publication ( ) Until ( X ) Title PHP SOFTWARE FRAMEWORKS Degree Programme Software Engineering Tutor(s) PELTOMÄKI, Juha Assigned by Sysdrone Oy Abstract The aim of the Bachelor’s Thesis was to carry out a comparative research of PHP-based open source software frameworks for Sysdrone Oy. The motivation behind this thesis work was to find possible software framework for the assigner’s future projects. The framework should preferably have im- plemented basic functionalities such as user management, authentication, and localization. Addi- tionally, it should consider possible content management features, quality of documentation and activity of community. The software frameworks Symfony, Zend and Yii, plus content management systems Joomla and Drupal were selected for closer inspection. These systems were studied empirically in a virtual ma- chine environment, while also searching information from written sources. Plenty of research material was collected for each software framework. This material will be useful as the assigner company plans its future projects. Including both basic software frameworks and more feature-rich content management systems in the same study caused difficulties during the comparison between those groups of systems. Each system was given a score based on the re- quirements defined by the assigner. One single best system cannot be named - instead it is advisa- ble to choose a framework based on the task at hand. Keywords Open source, Software framework, PHP, Drupal, Joomla, Symfony, Zend, Yii Miscellaneous 1 SISÄLTÖ TERMIT JA LYHENTEET ............................................................. 4 1 TYÖN LÄHTÖKOHDAT............................................................ 10 1.1 Tavoite .......................................................................... 10 1.2 Toimeksiantaja ............................................................... 10 1.3 Tarve ............................................................................ 11 1.4 Vaatimukset ................................................................... 11 2 TYÖN SUUNNITELMA JA ALOITUS ........................................... 13 2.1 Esitutkimus .................................................................... 13 2.2 Karsinta ........................................................................ 14 2.3 Virtuaalikone testiympäristönä ......................................... 15 3 TOTEUTUS........................................................................... 17 3.1 Symfony ........................................................................ 17 3.1.1 Yleisesti ................................................................... 17 3.1.2 Asennus ................................................................... 17 3.1.3 Autentikaatio ja käyttäjien hallinta .............................. 18 3.1.4 Käyttökokemus ......................................................... 19 3.1.5 CRUD-liittymän toteutus ............................................ 19 3.1.6 Dokumentaatio ja käyttäjäyhteisö ............................... 22 3.1.7 Lokalisointi ............................................................... 23 3.1.8 Testattavuus ............................................................ 24 3.2 Zend ............................................................................. 26 3.2.1 Yleisesti ................................................................... 26 3.2.2 Asennus ................................................................... 26 3.2.3 Autentikaatio ja käyttäjien hallinta .............................. 28 3.2.4 Käyttökokemus ......................................................... 29 3.2.5 CRUD-liittymän toteutus ............................................ 30 3.2.6 Dokumentaatio ja käyttäjäyhteisö ............................... 34 3.2.7 Lokalisointi ............................................................... 34 3.2.8 Testattavuus ............................................................ 35 3.3 Drupal ........................................................................... 37 3.3.1 Yleisesti ................................................................... 37 3.3.2 Asennus ................................................................... 37 3.3.3 Autentikaatio ja käyttäjien hallinta .............................. 38 3.3.4 Käyttökokemus ......................................................... 39 3.3.5 CRUD-liittymän toteutus ............................................ 41 2 3.3.6 Dokumentaatio ja käyttäjäyhteisö ............................... 44 3.3.7 Lokalisointi ............................................................... 44 3.3.8 Testattavuus ............................................................ 45 3.4 Yii ................................................................................. 46 3.4.1 Yleisesti ................................................................... 46 3.4.2 Asennus ................................................................... 46 3.4.3 Autentikaatio ja käyttäjien hallinta .............................. 48 3.4.4 Käyttökokemus ......................................................... 49 3.4.5 CRUD-liittymän toteutus ............................................ 49 3.4.6 Dokumentaatio ja käyttäjäyhteisö ............................... 52 3.4.7 Lokalisointi ............................................................... 53 3.4.8 Testattavuus ............................................................ 53 3.5 Joomla! ......................................................................... 55 3.5.1 Yleisesti ................................................................... 55 3.5.2 Asennus ................................................................... 55 3.5.3 Autentikaatio ja käyttäjien hallinta .............................. 56 3.5.4 Käyttökokemus ......................................................... 57 3.5.5 CRUD-liittymän toteutus ............................................ 58 3.5.6 Dokumentaatio ja käyttäjäyhteisö ............................... 58 3.5.7 Lokalisointi ............................................................... 59 3.5.8 Testattavuus ............................................................ 59 4 TULOKSET ........................................................................... 60 4.1 Symfony ........................................................................ 60 4.2 Zend ............................................................................. 60 4.3 Drupal ........................................................................... 61 4.4 Yii ................................................................................. 62 4.5 Joomla! ......................................................................... 62 4.6 Vertailu ......................................................................... 63 5 POHDINTA ........................................................................... 65 LÄHTEET ................................................................................ 67 LIITTEET ................................................................................ 69 Liite 1. Zend CRUD -ohjain. ................................................ 69 Liite 2. Zend CRUD -malli. .................................................. 70 Liite 3. Zend CRUD -listausnäkymä. ..................................... 71 Liite 4. Zend CRUD-lomake