Τι είναι το πλαίσιο PHP MVC;
Το PHP MVC είναι ένα σχέδιο σχεδίασης εφαρμογών που διαχωρίζει τα δεδομένα της εφαρμογής και την επιχειρηματική λογική (μοντέλο) από την παρουσίαση (προβολή). Το MVC σημαίνει Model, View & Controller.
Ο ελεγκτής μεσολαβεί μεταξύ των μοντέλων και των προβολών.
Σκεφτείτε το σχέδιο σχεδίασης MVC ως αυτοκίνητο και οδηγό.
Το αυτοκίνητο διαθέτει τα αλεξήνεμα (προβολή) που χρησιμοποιεί ο οδηγός (ελεγκτής) για να παρακολουθεί την κίνηση μπροστά και μετά την ταχύτητα ή το φρένο (μοντέλο) ανάλογα με το τι βλέπει μπροστά.
Γιατί να χρησιμοποιήσετε το PHP MVC Framework;
- Τα PHP MVC Frameworks απλοποιούν την εργασία με πολύπλοκες τεχνολογίες με:
- Απόκρυψη όλων των σύνθετων λεπτομερειών εφαρμογής
- Παροχή τυπικών μεθόδων που μπορούμε να χρησιμοποιήσουμε για τη δημιουργία των εφαρμογών μας
- Αυξημένη παραγωγικότητα προγραμματιστή, αυτό οφείλεται στο γεγονός ότι η βασική υλοποίηση δραστηριοτήτων όπως η σύνδεση με τη βάση δεδομένων, η απολύμανση των εισροών χρηστών κ.λπ. έχουν ήδη υλοποιηθεί εν μέρει.
- Συμμόρφωση με τα επαγγελματικά πρότυπα κωδικοποίησης
Σε αυτό το σεμινάριο, θα μάθετε-
- Πρότυπο σχεδίασης PHP MVC
- Τύποι πλαισίου PHP MVC
- Μεταφορά της αίτησης δημοσκόπησης στο CodeIgniter
- Ρυθμίσεις διαμόρφωσης βάσης δεδομένων
- Δημιουργία του μοντέλου μας
- Δημιουργία των απόψεών μας
- Δοκιμή της εφαρμογής μας
Πρότυπο σχεδίασης PHP MVC
Ας συζητήσουμε εν συντομία κάθε στοιχείο του σχεδιασμού MVC
Μοντέλο - αυτό το μέρος αφορά την επιχειρηματική λογική και τα δεδομένα της εφαρμογής. Μπορεί να χρησιμοποιηθεί για την πραγματοποίηση επικυρώσεων δεδομένων, την επεξεργασία δεδομένων και την αποθήκευσή τους. Τα δεδομένα μπορούν να προέρχονται από?
- επίπεδο αρχείο
- βάση δεδομένων
- Έγγραφο XML
- Άλλες έγκυρες πηγές δεδομένων.
Ελεγκτής - αυτό είναι το μέρος που αφορά τα αιτήματα των χρηστών για πόρους από το διακομιστή.
Για παράδειγμα, όταν οι χρήστες ζητούν τη διεύθυνση URL… /index.php?products=list, ο ελεγκτής θα φορτώσει το μοντέλο προϊόντων για να ανακτήσει τα δεδομένα προϊόντων και στη συνέχεια θα εμφανίσει τα αποτελέσματα στην προβολή λίστας.
Με λίγα λόγια, ο ελεγκτής συνδέει τα μοντέλα και τις προβολές μαζί ανάλογα με τους πόρους που ζητήθηκαν.
Προβολές - αυτό το μέρος ασχολείται με την παρουσίαση των δεδομένων στον χρήστη. Συνήθως έχει τη μορφή σελίδων HTML.
Τύποι πλαισίου PHP MVC
Η επιλογή του καλύτερου πλαισίου PHP είναι μια πρόκληση.
Δεν χρειάζεται να γράψετε το δικό σας πλαίσιο για να επωφεληθείτε από τα πλεονεκτήματα του MVC.
Θα πρέπει να προσπαθήσετε να δημιουργήσετε το δικό σας σχεδιασμό εφαρμογών που σχετίζεται με το MVC για να κατανοήσετε πώς λειτουργούν τα πλαίσια MVC.
Μόλις αισθανθείτε άνετα με τον τρόπο λειτουργίας των πλαισίων MVC, θα πρέπει να προχωρήσετε στα ώριμα και ήδη δοκιμασμένα πλαίσια.
Ο παρακάτω πίνακας περιγράφει εν συντομία μερικά από τα δημοφιλή πλαίσια php και τις δυνατότητες που προσφέρει κάθε πλαίσιο.
Δομή | Περιγραφή |
---|---|
CodeIgniter https://codeigniter.com/ | Είναι ένα από τα πιο δημοφιλή πλαίσια PHP MVC. Είναι ελαφρύ και έχει μια σύντομη καμπύλη μάθησης. Διαθέτει ένα πλούσιο σύνολο βιβλιοθηκών που βοηθούν στη γρήγορη δημιουργία ιστότοπων και εφαρμογών. Οι χρήστες με περιορισμένη γνώση του προγραμματισμού OOP μπορούν επίσης να το χρησιμοποιήσουν. Οι εφαρμογές με κώδικα CodeIgniter περιλαμβάνουν:
|
Κοχάνα http://kohanaframework.org | Πρόκειται για ένα ασφαλές και ελαφρύ πλαίσιο Hierarchical Model Controller HMVC. Διαθέτει ένα πλούσιο σύνολο συστατικών για γρήγορη ανάπτυξη εφαρμογών Οι εταιρείες που χρησιμοποιούν Kohana περιλαμβάνουν:
|
CakePHP www.cakephp.org | Είναι μοντελοποιημένο μετά την Ruby στις ράγες. Είναι γνωστό για έννοιες όπως μοτίβα σχεδιασμού λογισμικού, συμβατικές ρυθμίσεις, ActiveRecord κ.λπ. Οι εφαρμογές που υποστηρίζονται από CakePHP περιλαμβάνουν:
|
www.framework.zend.com Zend | Είναι ένα ισχυρό πλαίσιο που είναι.
|
Μεταφορά της αίτησης δημοσκόπησης στο CodeIgniter
Σε αυτό το σεμινάριο, δημιουργήσαμε μια εφαρμογή δημοσκόπησης PHP. Εδώ, θα μεταφέρουμε αυτόν τον κώδικα στο CodeIgniter
- Κατεβάστε την τελευταία έκδοση του CodeIgniter από τον ιστότοπό τους.
- Εξαγάγετε τα περιεχόμενα του συμπιεσμένου αρχείου στον κατάλογο ανάπτυξης στον κατάλογο διακομιστή ιστού. Θα χρησιμοποιήσουμε το ciopinionpoll ως όνομα φακέλου σε αυτό το μάθημα.
- Περιηγηθείτε στη διεύθυνση URL http: // localhost / ciopinionpoll /
Τώρα θα μεταφέρουμε την αίτηση δημοσκόπησης στο CodeIgniter. Θυμηθείτε ότι η εφαρμογή μας χωρίστηκε σε τρία βασικά στοιχεία, δηλαδή:
- Μπροστινός ελεγκτής - αυτό είναι το μέρος που ανταποκρίνεται σε αιτήματα διευθύνσεων URL και επιστρέφει τη σελίδα που ζητήθηκε. Αυτός ο κωδικός θα μεταβεί στον ελεγκτή
- Μοντέλο - αυτός είναι ο κωδικός που ανταποκρίνεται στα ζητούμενα δεδομένα και επιστρέφει τα ζητούμενα δεδομένα. Αυτός ο κωδικός θα μεταφερθεί στο μοντέλο
- Προβολές - αυτός είναι ο κωδικός που είναι υπεύθυνος για τη μορφοποίηση και την εμφάνιση των δεδομένων. Αυτός ο κωδικός θα μεταβεί στην προβολή
- Περιηγηθείτε στο φάκελο ciopinionpoll
- Ανοίξτε το αρχείο database.php που βρίσκεται στον κατάλογο εφαρμογής / config.
- Εντοπίστε τις ακόλουθες γραμμές κώδικα
Ρυθμίσεις διαμόρφωσης βάσης δεδομένων
- Ορίστε το όνομα χρήστη σε root
- Ορίστε τον κωδικό πρόσβασης στον τοπικό κωδικό πρόσβασης root
- Όνομα βάσης δεδομένων στη γνώμη_poll. Σημειώστε ότι θα χρησιμοποιήσουμε τη βάση δεδομένων που δημιουργήθηκε στο προηγούμενο μάθημα.
- Αποθηκεύστε τις αλλαγές και κλείστε το αρχείο.
Δημιουργία του μοντέλου μας
Στη συνέχεια πρόκειται να δημιουργήσουμε το μοντέλο μας που θα επεκτείνει το CI_Model. Το CI_Model είναι μέρος των βιβλιοθηκών CodeIgniter. Το μοντέλο θα βρίσκεται στην εφαρμογή / models opinion_poll_model.php
load->database();}public function total_votes(){$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');return $query->row()->choices_count;}public function get_results(){$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");$table_rows = '';for ($i = 1; $i < 5; $i++){$sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;";$result = $model->select($sql_stmt); $table_rows .= "";}public function add_vote($choice){$ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data);}}?> " . $ libraries [$i] . " Got: " . $result[0] . " votes
ΕΔΩ,
- Το "class Opinion_poll_model επεκτείνει το CI_Model…" είναι το μοντέλο μας που επεκτείνει το CI_Model
- "… Γονέας :: __construct ();" καλεί τον κατασκευαστή CI_Model
- "$ This-> load-> βάση δεδομένων ();" φορτώνει τη βιβλιοθήκη βάσεων δεδομένων έτσι ώστε η εφαρμογή μας να μπορεί να αλληλεπιδράσει με τη βάση δεδομένων
- Το "$ this-> db->" είναι η ενεργή εγγραφή του CodeIgniter. Ελέγξτε αυτόν τον σύνδεσμο για περισσότερες πληροφορίες σχετικά με την ενεργή εγγραφή.
Δημιουργία του ελεγκτή μας Ας δημιουργήσουμε τώρα τον ελεγκτή. Θα χρησιμοποιήσουμε τον προεπιλεγμένο ελεγκτή CodeIgniter που βρίσκεται στο application / Controllers / welcome.php. Αντικαταστήστε τους πηγαίους κωδικούς του με τον ακόλουθο κωδικό.
load->model('opinion_poll_model');}public function index() {if ($this->input->post('submitbutton') && !$this->input->post('vote')) {echo "";}if ($this->input->post('vote')) {$this->opinion_poll_model->add_vote($this->input->post('vote'));$data['total_votes'] = $this->opinion_poll_model->total_votes();$data['rows'] = $this->opinion_poll_model->get_results();$this->load->view('results', $data);} else {$this->load->view('opinion_poll_form');}}}/* End of file welcome.php *//* Location: ./application/controllers/welcome.php */?>
ΕΔΩ,
- "If (! Define ('BASEPATH')) έξοδος ('Δεν επιτρέπεται άμεση πρόσβαση σεναρίου');" διασφαλίζει ότι οι χρήστες δεν έχουν άμεση πρόσβαση στην κατηγορία ελεγκτή
- "Class Welcome επεκτείνει το CI_Controller…" ο ελεγκτής μας επεκτείνει την κλάση CI_Controller
- Η "δημόσια λειτουργία __construct ()" καλεί τη μέθοδο αγωγού κλάσης CI_Controller και φορτώνει το μοντέλο Opinion_poll_model
- "Public function index () ..." είναι η συνάρτηση που αντιστοιχεί στο index.php. Χρησιμοποιεί την κλάση εισαγωγής CodeIgniter για να ελέγξει εάν έχει υποβληθεί μια ψήφος, να την προσθέσει στη βάση δεδομένων και να εμφανίσει τα αποτελέσματα. Εάν ο πίνακας ανάρτησης της κλάσης εισαγωγής είναι κενός, φορτώνει τη σελίδα ψηφοφορίας.
- "$ This-> input-> post ('…')" είναι η κλάση εισαγωγής CodeIgniter που λαμβάνει τα περιεχόμενα της καθολικής μεταβλητής $ _POST.
- "$ This-> comment_poll_model-> add_vote ($ this-> input-> post ('vote'))" καλεί τη μέθοδο add_vote του μοντέλου για να προσθέσει την ψήφο στη βάση δεδομένων.
Δημιουργία των απόψεών μας
Θυμηθείτε από το προηγούμενο παράδειγμα ότι είχαμε δύο σελίδες HTML, μία για ψηφοφορία και η άλλη για αποτελέσματα. Θα χρησιμοποιήσουμε τον ίδιο κώδικα HTML με ελάχιστες τροποποιήσεις για να δημιουργήσουμε τις απόψεις μας. Δημιουργήστε τα ακόλουθα αρχεία στον κατάλογο εφαρμογών / προβολών
opinion_poll_form.phpJavaScript Libraries - Opinion Poll JavaScript Libraries - Opinion Poll
What is your favorite JavaScript Library?
Ας δημιουργήσουμε τώρα τα αποτελέσματα της σελίδας αποτελεσμάτων.php
JavaScript Libraries - Opinion Poll Results JavaScript Libraries - Opinion Poll Results
What is your favorite JavaScript Library?
people have thus far taken part in this poll:
Δοκιμή της εφαρμογής μας
Υποθέτοντας ότι ο ριζικός κατάλογος της εφαρμογής σας είναι ciopinion, μεταβείτε στη διεύθυνση http: // localhost / ciopionpoll /
Κάντε κλικ στο κουμπί OK, θα δείτε το ακόλουθο μήνυμα ειδοποίησης
Ψηφίστε τον αγαπημένο σας υποψήφιο και, στη συνέχεια, κάντε κλικ στο OK. Θα δείτε την ακόλουθη σελίδα αποτελεσμάτων
συμπέρασμα
Το CodeIgniter είναι ένα εύκολο στην εκμάθηση και χρήση πλαίσιο PHP MVC που μπορεί να μειώσει σημαντικά τον χρόνο που αφιερώνεται στην ανάπτυξη εφαρμογών.
Περίληψη
- Το πλαίσιο είναι ένα σύνολο βιβλιοθηκών που παρέχουν μερική εφαρμογή κοινών εργασιών.
- Η PHP διαθέτει έναν αριθμό ανοιχτών πηγών ώριμων και δοκιμασμένων πλαισίων MVC.
- Μια καλή προσέγγιση ανάπτυξης χωρίζει τα δεδομένα από την παρουσίαση και ενθαρρύνει τη χρήση ενός σημείου εισόδου σε μια εφαρμογή.
- Οι παραδοσιακές εφαρμογές PHP που ακολουθούν τις βέλτιστες πρακτικές σχεδιασμού εφαρμογών μπορούν να μεταφερθούν σε πλαίσια MVC με ελάχιστες τροποποιήσεις.