Linux Inside
52
Web Frameworks
μένο έτσι, ώστε να είναι επεκτάσιμο και παντοδύναμο, με τη
δυνατότητα κάθε επέκτασης να περιγράφεται από την XML.
Οι εφαρμογές του Agavi τρέχουν μέσα σε ένα κλειστό αντι-
κείμενο που ονομάζεται «context» της εφαρμογής. Αυτό το
αντικείμενο φαίνεται προς την εφαρμογή σας και αποτελεί το
σκελετό της.
Το αντικείμενο Context είναι διαθέσιμο σε όλο τον κώδικά
σας. Είναι ένα σημαντικό αντικείμενο, μιας και με αυτό έχετε
πρόσβαση σε όλα τα άλλα αντικείμενα που παρέχει το
framework.
Για παράδειγμα, για να έχετε πρόσβαση στο αντικείμενο
DatabaseManager, για να συνδεθείτε σε μία βάση δεδομέ-
νων, θα πρέπει να γράψετε κάτι σαν το παρακάτω:
$dbm = $this->context->getDatabaseManager();
$db = $dbm->getDatabase('blog');
$conn = $db->getConnection();
Οι βιβλιοθήκες του Agavi είναι οι εξής:
•
action, όπου μπορείτε να διαχωρίσετε τη λογική της πα-
ρουσίασής σας σε application και business,
•
config, που λειτουργεί ως ένα registry ρυθμίσεων για την
εφαρμογή σας,
•
controller, που ελέγχει τη ροή της εφαρμογής,
•
core, που είναι η βασική βιβλιοθήκη εκκίνησης κάθε εφαρ-
μογής,
•
database, που λειτουργεί ως ένα ενιαίο layer σύνδεσης με
μία βάση δεδομένων,
•
date, με την οποία δημιουργείτε αντικείμενα που διαχειρί-
ζονται το χρόνο,
•
exception, με την οποία αντιμετωπίζονται όσα λάθη εγείρει
η εφαρμογή,
•
filter, μία βιβλιοθήκη που διαχειρίζεται requests,
•
logging, μία βιβλιοθήκη που σας επιτρέπει να χρησιμοποιεί-
τε ταυτόχρονα πολλά logs και να καταγράφετε σε αυτά,
•
model, η βασική βιβλιοθήκη διαχείρισης μοντέλων στην αρ-
χιτεκτονική MVC,
•
renderer, η βιβλιοθήκη που παράγει κάθε έξοδο για ένα
view,
•
request, μία βιβλιοθήκη που διαχειρίζεται τα attributes,
errors και parameters απο requests,
•
η response, που διαχειρίζεται τις απαντήσεις που στέλνο-
νται πίσω στον client,
•
routing, με την οποία διαχειρίζεστε τα URL της εφαρμογής
σας,
•
storage, που διαχειρίζεται τα μόνιμα δεδομένα της εφαρ-
μογής,
•
testing, που απλά φορτώνει και εκκινεί την εφαρμογή σε
κατάσταση testing,
•
translation, με την οποία διαχειρίζεστε τις μεταφράσεις
στην εφαρμογή σας, εάν αυτή είναι πολυγλωσσική,
•
user, που διαχειρίζεται τα sessions ενός χρήστη και όλα τα
δεδομένα σε αυτό,
•
util, που παρέχει συναρτήσεις γενικής χρήσης, όπως
isNotArray, floorDivide κ.λπ.
•
validator, που παρέχει συναρτήσεις για έλεγχο των δεδομέ-
νων σε κάθε δομή, όπως σε πίνακες, αρχεία, ημερομηνίες
κ.λπ.
•
view, η βασική βιβλιοθήκη των views στην αρχιτεκτονική
MVC.
Το έργο ξεκίνησε το 2005, είναι γραμμένο σε PHP, είναι
σχετικά ώριμο και δίνεται με την άδεια LGPL.
Agile Toolkit
Ένα πανίσχυρο Web framework!
URL: agiletoolkit.org
Το Agile Toolkit είναι ένα Web application framework ανοιχτού
κώδικα με προσανατολισμό στη χρήση widgets. Ως γλώσσα
προγραμματισμού έχει την PHP. Θυμίζει την ανάπτυξη εφαρμο-
γών για desktop με GUI, Graphical User Interface όπως με τα
frameworks Cocoa ή Qt. Ο σκοπός του Agile Toolkit είναι να
απλοποιήσει το Web development μέσω μίας αρχιτεκτονικής
abstraction για τη δημιουργία Web User Interface, data storage,
JavaScript και για το AJAX, με ταυτόχρονη χρήση έγκυρου κώδι-
κα HTML. Το Agile Toolkit αναπτύχθηκε ιδιωτικά για πάνω από
δέκα χρόνια. Η έκδοση 4.0.1 εκδόθηκε υπό την άδεια AGPL τον
Φεβρουάριο του 2011. Το έργο ξεκίνησε ως ανοιχτού κώδικα σε
μία χρονική στιγμή χωρίς κοινότητα, αλλά λόγω της εκπληκτικής
δουλειάς που έχει γίνει απέκτησε χιλιάδες χρήστες και μία ισχυ-
ρή κοινότητα τους πρώτους δέκα μήνες. Έχει εστιάσει στο να εί-
ναι απλό, δυνατό και καλά οργανωμένο, με σκοπό να αποτελέσει
κάτι σαν την QT αλλά για το Web! Αποτελείται από ένα πλήθος
κλάσεων, οι οποίες δίνουν αντικείμενα με χαρακτηριστικά σε μία
Web εφαρμογή όπως: DSQL (Object-Relational Mapping),
Models (Active record pattern), Views (μία απλή υλοποίηση Web
widgets), SMlite (Passive lightweight Template engine (Web)),
CSS Features (Reset, Fluid Grid System, Typography), JQuery UI
Widget-enhanced Form, Grid, Menu κ.λπ. Διάφορα άλλα page-
based frameworks, όπως τα Symfony, Code Igniter, CakePHP,
Django, Ruby και Rails κ.ά., δεν διαχειρίζονται τεχνολογίες όπως
την HTML, το CSS, την JavaScript, το jQuery, το AJAX και την
SQL. Αυτό έχει ως συνέπεια ο Web developer να πρέπει να γνω-
ρίζει επιπλέον τις τεχνολογίες αυτές, ώστε να τις υλοποιήσει
στην εφαρμογή του χωριστά από το Web framework. Το Agile
Toolkit δίνει τη δυνατότητα διαχείρισης όλων των Web τεχνολο-
γιών εσωτερικά, σε επίπεδα και με αντικείμενα, ιδιότητες και με-
θόδους. Το Agile έχει εμπνευστεί από τα GUI των dektops χωρίς
να μετατρέπει την ιστοσελίδα σας σε ένα GUI που να μοιάζει με
εφαρμογή desktop, αλλά σε ένα GUI με τις ευκολίες προγραμ-
ματισμού μιας εφαρμογής desktop. Το framework είναι επίσης
προγραμματιζόμενο και επεκτάσιμο. Αν νομίζετε ότι κάτι λείπει
και θέλετε να το προσθέσετε, μπορείτε να γράψετε ένα plug–in
και να επεκτείνετε τις κλάσεις του. Αν είστε συνηθισμένοι με
JavaScript frameworks, το Agile Toolkit είναι παρόμοια ισχυρό με
το jQuery και το jQuery UI, αλλά ενεργεί στο server-side μέρος
της εφαρμογής.
Τα API στο Agile είναι εύκολα και δυνατά, π.χ.
$name = $this->api->db->dsql()
->table('user')
->field('name')
->where('id',$_GET['id'])
->do_getOne();
Το έργο ξεκίνησε το 2002, είναι γραμμένο σε PHP, είναι πο-
λύ ώριμο και δίνεται με την άδεια ΑGPL.