Πλαίσιο CodeIgniter MVC (Model View Controller) με Παράδειγμα

Τι είναι το MVC;

Πρότυπα MVC για Model-View-Control. Είναι ένα αρχιτεκτονικό μοτίβο που χωρίζει την εφαρμογή σε τρία κύρια στοιχεία.

1. Το μοντέλο ασχολείται με την επιχειρηματική λογική και τις αλληλεπιδράσεις βάσεων δεδομένων

2. Ο ελεγκτής συντονίζει τις δραστηριότητες μεταξύ του μοντέλου και της προβολής

3. Η View είναι υπεύθυνη για την παρουσίαση δεδομένων

Τα παρακάτω είναι μερικά από τα πλεονεκτήματα του αρχιτεκτονικού μοτίβου MVC

  • Χαλαρή σύζευξη - τα εξαρτήματα υπάρχουν και λειτουργούν ανεξάρτητα το ένα από το άλλο.
  • Ευελιξία – μπορεί κανείς εύκολα να κάνει αλλαγές σε μεμονωμένα εξαρτήματα
  • Αυξημένη παραγωγικότητα – περισσότερα από ένα άτομα μπορούν να εργαστούν στο έργο ταυτόχρονα. Οι προγραμματιστές front-end μπορούν να εργαστούν σε προβολές και παρουσιάσεις, ενώ οι προγραμματιστές backend μπορούν να επικεντρωθούν σε μοντέλα και επειδή το σύστημα είναι χαλαρά συνδεδεμένο, λειτουργεί στο τέλος της ημέρας

Μοντέλο

Το μοντέλο είναι υπεύθυνο για την αλληλεπίδραση με τις πηγές δεδομένων. Αυτή είναι συνήθως μια βάση δεδομένων, αλλά μπορεί επίσης να είναι μια υπηρεσία που παρέχει τα ζητούμενα δεδομένα. Είναι επίσης κοινή πρακτική να περιέχεται η επιχειρηματική λογική στα μοντέλα σε αντίθεση με τον ελεγκτή. Αυτή η πρακτική ονομάζεται συνήθως κοκαλιάρικο ελεγκτή παχιού μοντέλου.

Το μοντέλο συνήθως εγγράφει δεδομένα στη βάση δεδομένων, παρέχει έναν μηχανισμό για επεξεργασία και ενημέρωση και διαγραφή δεδομένων. Σε μια σύγχρονη διαδικτυακή εφαρμογή, τα μοντέλα χρησιμοποιούν μοτίβα σχεδίασης πρόσβασης δεδομένων, όπως η ενεργή εγγραφή, για να διευκολύνουν την αλληλεπίδραση με τη βάση δεδομένων.

Για παράδειγμα, το CodeIgniter χρησιμοποιεί μια ενσωματωμένη βιβλιοθήκη Active Record για να βοηθήσει τα μοντέλα, ενώ άλλα πλαίσια όπως το Laravel χρησιμοποιούν το Eloquent Object Relational Mapper (ORM) που βοηθά την πρόσβαση στα δεδομένα.

ελεγκτής

Ο ελεγκτής ακούει τα εισερχόμενα αιτήματα για πόρους από τους χρήστες. Λειτουργεί ως το ενδιάμεσο μεταξύ του μοντέλου και της προβολής και κατά καιρούς εφαρμόζει και ορισμένους επιχειρηματικούς κανόνες. Ας υποθέσουμε ότι ο ελεγκτής λαμβάνει ένα αίτημα για εγγραφή ενός χρήστη στη βάση δεδομένων.

Ο υπεύθυνος επεξεργασίας μπορεί να πραγματοποιήσει επικύρωση δεδομένων για όσα έχουν υποβληθεί για να διασφαλίσει ότι έχουν υποβληθεί όλες οι απαιτούμενες παράμετροι. Εάν κάτι λείπει, ο χρήστης ανακατευθύνεται στη σελίδα εγγραφής με το κατάλληλο μήνυμα σφάλματος να εμφανίζεται. Ο ελεγκτής μπορεί επίσης να ζητήσει από το μοντέλο να εκτελέσει περισσότερη επικύρωση ελέγχοντας εάν η υποβληθείσα διεύθυνση email υπάρχει ήδη. Εάν περάσουν όλοι οι κανόνες επικύρωσης, τότε ο ελεγκτής υποβάλλει τα δεδομένα στο μοντέλο για επεξεργασία και περιμένει την απάντηση.

Μόλις το μοντέλο επεξεργαστεί τις πληροφορίες και επιστρέψει θετική απόκριση, ο ελεγκτής φορτώνει την κατάλληλη προβολή και μεταβιβάζει τα δεδομένα που επιστρέφονται από το μοντέλο ως παράμετρος.

Προβολή

Η προβολή ασχολείται με δεδομένα που παρουσιάζονται στον τελικό χρήστη. Στις εφαρμογές Ιστού, οι προβολές συχνά περιέχουν HTML, CSS και προαιρετικά JavaΓραφή. Οι προβολές περιέχουν ελάχιστο κώδικα προγραμματισμού. Ο κώδικας που περιέχεται στις προβολές χρησιμοποιείται συνήθως για να κάνει βρόχο συλλογών δεδομένων που λαμβάνονται ως παράμετροι από το μοντέλο ή τη βοηθητική συνάρτηση για τον καθαρισμό δεδομένων ή τη δημιουργία συνδέσμων για την επεξεργασία των εγγραφών. Οι περισσότερες σύγχρονες διαδικτυακές εφαρμογές χρησιμοποιούν συνήθως μηχανές προτύπων που ορίζουν τη δική τους σύνταξη που μοιάζει περισσότερο με ψευδοκώδικα και μπορεί να γίνει εύκολα κατανοητή από τους σχεδιαστές. Όταν εργάζεστε με το CodeIgniter, είναι κοινή πρακτική να χρησιμοποιείτε σύντομες ετικέτες PHP και δομές ελέγχου. Για να εμφανίσετε κάτι στο CodeIgniter, θα μπορούσατε να χρησιμοποιήσετε τον ακόλουθο κώδικα

<?=$title?>

Σε αντίθεση με

<?php
echo $title;
?>

Οι δομές ελέγχου συνήθως γράφονται ως εξής

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

Όπως μπορείτε να δείτε από το παραπάνω παράδειγμα, η προβολή θα χρησιμοποιεί έναν συνδυασμό από PHP και HTML αντί να περικλείει τα πάντα σε καθαρό κώδικα PHP.

Πώς λειτουργούν τα πλαίσια MVC;

Η παρακάτω εικόνα δείχνει τις εργασίες πλαισίου MVC

Το MVC Frameworks λειτουργεί

Ένας ελεγκτής λαμβάνει το αίτημα από τον χρήστη, αλληλεπιδρά με το μοντέλο της βάσης δεδομένων εάν είναι απαραίτητο και στη συνέχεια επιστρέφει το αποτέλεσμα πίσω στο πρόγραμμα περιήγησης με τη μορφή κώδικα HTML τον οποίο το πρόγραμμα περιήγησης ερμήνευσε σε μορφή αναγνώσιμη από τον άνθρωπο και εμφανίστηκε στον χρήστη.

Ελεγκτής CodeIgniter

Ας αναλύσουμε τώρα τι συνέβη μόλις φορτώσαμε την παραπάνω διεύθυνση URL στο πρόγραμμα περιήγησης ιστού.

Ανοίξτε το αρχείο Ο ελεγκτής Welcome.php που βρίσκεται η εφαρμογή/ελεγκτές

Θα πρέπει να μπορείτε να δείτε τον παρακάτω κώδικα

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

ΕΔΩ,

  • defined('BASEPATH') OR exit ('Δεν επιτρέπεται άμεση πρόσβαση σεναρίου'); αποτρέπει την άμεση πρόσβαση στον ελεγκτή εάν το αίτημα δεν προερχόταν μέσω του index.php. αυτό είναι για λόγους ασφαλείας.
  • class Welcome extends CI_Controller {…} ορίζει την κλάση του ελεγκτή Welcome και επεκτείνει τη γονική κλάση CI_Controller
  • Η δημόσια συνάρτηση index(){…} ορίζει τη μέθοδο ευρετηρίου που ανταποκρίνεται στη διεύθυνση URL http://localhost:3000
    • $this->load->view('welcome_message'); φορτώνει την προβολή Welcome_message που βρίσκεται στον κατάλογο εφαρμογών/προβολών

Τώρα θα ενημερώσουμε τη μέθοδο ευρετηρίου ως εξής

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

ΕΔΩ,

  • $this->load->model('customers_model'); φορτώνει το μοντέλο πελατών.
  • $data['customer'] = $this->customers_model->get_customer(3); καλεί τη μέθοδο get_customer του customers_model και περνάει στην παράμετρο 3. Σε αυτό το παράδειγμα έχουμε κωδικοποιήσει σκληρά την τιμή, αλλά στις πραγματικές εφαρμογές αυτή θα ήταν μια παράμετρος από το URI.
  • $this->load->view('welcome_message',$data); φορτώνει την προβολή Welcome_message και μεταβιβάζει τη μεταβλητή $data στην προβολή

Μοντέλο CodeIgniter

Ας δημιουργήσουμε τώρα την προβολή που αναφέραμε στον παραπάνω κώδικα. Για λόγους απλότητας, το μοντέλο μας δεν θα αλληλεπιδράσει με το βάσεις δεδομένων αλλά θα επιστρέψει μια στατική εγγραφή πελάτη. Θα δουλέψουμε με βάσεις δεδομένων στα επόμενα σεμινάρια.

Δημιουργήστε ένα αρχείο Customers_model.php σε εφαρμογή/μοντέλα

Προσθέστε τον παρακάτω κώδικα

<?php
class Customers_model extends CI_Model {
public function get_customer($id) {
$data['id'] = 3;
$data['first_name'] = 'John';
$data['last_name'] = 'Doe';
$data['address'] = 'Kingstone';
return $data;
}
}

ΕΔΩ,

  • class Customers_model extends CI_Model {…} ορίζει το μοντέλο Customers_model που επεκτείνει το CI_Model.
  • η δημόσια συνάρτηση get_customer($id) {…} ορίζει τη μέθοδο λήψης πελάτη με βάση ένα αναγνωριστικό πελάτη
  • Το $data[…] ορίζει τις στατικές τιμές του πλασματικού πελάτη μας. Αυτή θα πρέπει να είναι μια σειρά που επιστρέφεται από τη βάση δεδομένων.
  • επιστροφή $δεδομένων. επιστρέφει τα δεδομένα του πελάτη.

Δηλαδή για το μοντέλο μας. Ας τροποποιήσουμε τώρα την προβολή Welcome_message

Ανοίξτε το welcome_message.php που βρίσκεται στο

application/views/welcome_message.php

Αντικαταστήστε τον κωδικό με τον ακόλουθο

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CodeIgniter MVC Basics</title>
</head>
<body>
<h1>Customer Details Card</h1>
<p>Customer ID : <strong><?=$customer['id']?></strong></p>
<p>First Name  : <strong><?=$customer['first_name']?></strong></p>
<p>Last Name   : <strong><?=$customer['last_name']?></strong></p>
<p>Address     : <strong><?=$customer['address']?></strong></p>
</body>
</html>

Αποθηκεύστε τις αλλαγές

Φορτώστε την ακόλουθη διεύθυνση URL στο πρόγραμμα περιήγησης ιστού

http://localhost:3000/

Θα πρέπει να μπορείτε να δείτε την κάρτα πελάτη όπως φαίνεται στην παρακάτω εικόνα

Μοντέλο CodeIgniter

Περίληψη

  • MVC είναι ένα αρχιτεκτονικό μοτίβο που χωρίζει την εφαρμογή σε τρία κύρια στοιχεία
  • Το μοντέλο είναι υπεύθυνο για την αλληλεπίδραση με τις πηγές δεδομένων
  • Ο ελεγκτής ακούει τα εισερχόμενα αιτήματα για πόρους από τους χρήστες
  • Στις εφαρμογές Ιστού, οι προβολές συχνά περιέχουν HTML, CSS και προαιρετικά JavaΓραφή
  • Ένας ελεγκτής λαμβάνει το αίτημα από τον χρήστη, αλληλεπιδρά με το μοντέλο της βάσης δεδομένων εάν είναι απαραίτητο και στη συνέχεια επιστρέφει το αποτέλεσμα πίσω στο πρόγραμμα περιήγησης με τη μορφή κώδικα HTML

Συνοψίστε αυτήν την ανάρτηση με: