PHP MVC Framework Tutorial: CodeIgniter Example

Τι είναι το πλαίσιο PHP MVC;

Το PHP MVC είναι ένα μοτίβο σχεδίασης εφαρμογής που διαχωρίζει τα δεδομένα της εφαρμογής και τη λογική της επιχείρησης (μοντέλο) από την παρουσίαση (προβολή). Το MVC σημαίνει Model, View & Controller.

Ο ελεγκτής μεσολαβεί μεταξύ των μοντέλων και των προβολών.

Σκεφτείτε το σχέδιο σχεδίασης MVC ως αυτοκίνητο και οδηγός.

Το αυτοκίνητο έχει τα παρμπρίζ (όψη) τα οποία χρησιμοποιεί ο οδηγός (ελεγκτής) για να παρακολουθεί την κυκλοφορία μπροστά και μετά την ταχύτητα ή το φρένο (μοντέλο) ανάλογα με το τι βλέπει μπροστά.

Γιατί να χρησιμοποιήσετε το PHP MVC Framework;

  • Τα PHP MVC Frameworks απλοποιούν την εργασία με πολύπλοκες τεχνολογίες με
    • Απόκρυψη όλων των πολύπλοκων λεπτομερειών υλοποίησης
    • Παρέχοντας τυπικές μεθόδους που μπορούμε να χρησιμοποιήσουμε για τη δημιουργία των εφαρμογών μας.
    • Αυξημένη παραγωγικότητα προγραμματιστών, αυτό συμβαίνει επειδή η βασική υλοποίηση δραστηριοτήτων όπως η σύνδεση στη βάση δεδομένων, η εξυγίανση των εισροών χρήστη κ.λπ. έχουν ήδη υλοποιηθεί εν μέρει.
    • Τήρηση επαγγελματικών προτύπων κωδικοποίησης

Μοτίβο σχεδίασης PHP MVC

Ας συζητήσουμε τώρα εν συντομία κάθε στοιχείο του σχεδίου σχεδίασης MVC.

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

  • επίπεδο αρχείο
  • βάσεις δεδομένων
  • Έγγραφο XML
  • Άλλες έγκυρες πηγές δεδομένων.

ελεγκτής – αυτό είναι το μέρος που ασχολείται με τα αιτήματα των χρηστών για πόρους από τον διακομιστή.

Για παράδειγμα, όταν οι χρήστες ζητούν τη διεύθυνση URL …/index.php?products=list, ο ελεγκτής θα φορτώσει το μοντέλο προϊόντων για να ανακτήσει τα δεδομένα των προϊόντων και στη συνέχεια να εξάγει τα αποτελέσματα στην προβολή λίστας.

Με λίγα λόγια, ο ελεγκτής συνδέει τα μοντέλα και τις προβολές μεταξύ τους ανάλογα με τους απαιτούμενους πόρους.

Προβολές – αυτό το μέρος ασχολείται με την παρουσίαση των δεδομένων στον χρήστη. Αυτό είναι συνήθως με τη μορφή σελίδων HTML.

Τύποι πλαισίου PHP MVC

Η επιλογή του καλύτερου πλαισίου PHP είναι μια πρόκληση.

Δεν χρειάζεται να γράψετε το δικό σας πλαίσιο για να επωφεληθείτε από τα πλεονεκτήματα του MVC.

Θα πρέπει μόνο να προσπαθήσετε να δημιουργήσετε το δικό σας σχέδιο εφαρμογής που σχετίζεται με το MVC για να κατανοήσετε πώς λειτουργούν τα πλαίσια MVC.

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

Ο παρακάτω πίνακας περιγράφει εν συντομία μερικά από τα δημοφιλή πλαίσια php και τις δυνατότητες που προσφέρει κάθε πλαίσιο.

Πλαίσιο Descriptιόν

CodeIgniter


CodeIgniter


https://codeigniter.com/

Είναι ένα από τα πιο δημοφιλή πλαίσια PHP MVC. Είναι ελαφρύ και έχει μικρή καμπύλη εκμάθησης. Διαθέτει ένα πλούσιο σύνολο βιβλιοθηκών που βοηθούν στη γρήγορη δημιουργία ιστοσελίδων και εφαρμογών. Οι χρήστες με περιορισμένες γνώσεις προγραμματισμού OOP μπορούν επίσης να το χρησιμοποιήσουν. Οι εφαρμογές που τροφοδοτούνται με CodeIgniter περιλαμβάνουν:


Κοχάνα


Κοχάνα


http://kohanaframework.org

Είναι ένα ασφαλές και ελαφρύ πλαίσιο Hierarchical Model View Controller HMVC. Διαθέτει ένα πλούσιο σύνολο εξαρτημάτων για την ταχεία ανάπτυξη εφαρμογών. Οι εταιρείες που χρησιμοποιούν Kohana περιλαμβάνουν:


CakePHP


CakePHP


www.cakephp.org

Είναι σχεδιασμένο σύμφωνα με το Ruby on Rails. Είναι γνωστό για έννοιες όπως μοτίβα σχεδίασης λογισμικού, convention over configuration, ActiveRecord κ.λπ. CakePHP Οι τροφοδοτούμενες εφαρμογές περιλαμβάνουν


Zend

www.framework.zend.com


Zend

Είναι ένα ισχυρό πλαίσιο που είναι?

  • Ασφαλές, αξιόπιστο, γρήγορο και επεκτάσιμο
  • Υποστηρίζει Web 2.0 και δημιουργία διαδικτυακών υπηρεσιών.

Διαθέτει API από προμηθευτές όπως Amazon, Google, Flickr, Yahoo κ.λπ. Είναι ιδανικό για την ανάπτυξη επιχειρηματικών εφαρμογών. Οι εφαρμογές που υποστηρίζονται από Zend περιλαμβάνουν:

  • Pimcore CMS,
  • DotKernel.

Οι εταιρείες που χρησιμοποιούν το πλαίσιο Zend περιλαμβάνουν:

  • BBC
  • Cisco
  • Webex
  • Προσφορές.com

Μεταφορά της εφαρμογής δημοσκόπησης στο CodeIgniter

Σε αυτή τη φροντιστήριο, δημιουργήσαμε μια εφαρμογή δημοσκόπησης PHP. Εδώ, θα μεταφέρουμε αυτόν τον κώδικα στο CodeIgniter

  • Λήψη την τελευταία έκδοση του CodeIgniter από τους ιστοσελίδα.
  • Εξαγάγετε τα περιεχόμενα του συμπιεσμένου αρχείου στον κατάλογο ανάπτυξης στον κατάλογο του διακομιστή ιστού σας. Θα χρησιμοποιήσουμε το ciopinionpoll ως όνομα φακέλου σε αυτό το μάθημα.
  • Περιηγηθείτε στη διεύθυνση URL http://localhost/ciopinionpoll/

Μεταφορά της εφαρμογής δημοσκόπησης στο CodeIgniter

Τώρα θα μεταφέρουμε την εφαρμογή δημοσκόπησης στο CodeIgniter. Θυμηθείτε ότι η εφαρμογή μας χωρίστηκε σε τρία κύρια στοιχεία και συγκεκριμένα το

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

    • Περιηγηθείτε στον φάκελο ciopinionpoll
    • Ανοίξτε το βάση δεδομένων.php αρχείο που βρίσκεται στον κατάλογο εφαρμογής/διαμόρφωσης.
    • Εντοπίστε τις ακόλουθες γραμμές κώδικα

Ρυθμίσεις διαμόρφωσης βάσης δεδομένων

Ρυθμίσεις διαμόρφωσης βάσης δεδομένων

  • Ορίστε το όνομα χρήστη σε root
  • Ορίστε τον κωδικό πρόσβασης στον κωδικό πρόσβασης root του localhost
  • Όνομα βάσης δεδομένων για opinion_poll. Σημειώστε ότι θα χρησιμοποιήσουμε τη βάση δεδομένων που δημιουργήθηκε στο προηγούμενο μάθημα.
  • Αποθηκεύστε τις αλλαγές και κλείστε το αρχείο.

Δημιουργώντας το μοντέλο μας

Στη συνέχεια θα δημιουργήσουμε το μοντέλο μας που θα επεκτείνει το CI_Model. Το CI_Model είναι μέρος των βιβλιοθηκών CodeIgniter. Το μοντέλο θα βρίσκεται σε εφαρμογή/μοντέλα opinion_poll_model.php

<?php 
class Opinion_poll_model extends CI_Model 
{ 
    public function __construct() 
    { 
    	$this->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 .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; 
        } 
        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); 
        } 
   } 
?>

ΕΔΩ,

  • Το "class Opinion_poll_model extends CI_Model..." είναι το μοντέλο μας που επεκτείνει το CI_Model
  • "…γονικό:: __construct();" καλεί τον κατασκευαστή CI_Model
  • "$this->load->database();" φορτώνει τη βιβλιοθήκη της βάσης δεδομένων έτσι ώστε η εφαρμογή μας να μπορεί να αλληλεπιδρά με τη βάση δεδομένων
  • Το “$this->db->” είναι η ενεργή εγγραφή του CodeIgniter. Ελεγξε αυτό σύνδεσμος για περισσότερες πληροφορίες σχετικά με την ενεργή εγγραφή.

Δημιουργία του ελεγκτή μας Ας δημιουργήσουμε τώρα τον ελεγκτή. Θα χρησιμοποιήσουμε τον προεπιλεγμένο ελεγκτή CodeIgniter που βρίσκεται στο application/controllers/welcome.php. Αντικαταστήστε τους πηγαίους κωδικούς του με τον ακόλουθο κώδικα.

<?php

if (!defined('BASEPATH'))  exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct() {

        parent::__construct();

        $this->load->model('opinion_poll_model');

    }

    public function index() {

        if ($this->input->post('submitbutton') && !$this->input->post('vote')) {

            echo "<script>alert('You did not vote!');</script>";

        }

        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 (!defined('BASEPATH')) exit ('Δεν επιτρέπεται η άμεση πρόσβαση σεναρίου');" διασφαλίζει ότι οι χρήστες δεν έχουν άμεση πρόσβαση στην κλάση ελεγκτή
  • "class Welcome extends CI_Controller..." ο ελεγκτής μας επεκτείνει την κλάση CI_Controller
  • Η "δημόσια συνάρτηση __construct()" καλεί τη μέθοδο κατασκευαστή κλάσης του CI_Controller και φορτώνει το μοντέλο μας Opinion_poll_model
  • Το "public function index()..." είναι η συνάρτηση που αντιστοιχίζεται στο index.php. χρησιμοποιεί την κλάση εισόδου του CodeIgniter για να ελέγξει εάν έχει υποβληθεί μια ψηφοφορία, να την προσθέσει στη βάση δεδομένων και να εμφανίσει τα αποτελέσματα. Εάν ο πίνακας αναρτήσεων της κλάσης εισόδου είναι κενός, φορτώνει τη σελίδα ψηφοφορίας.
  • Το "$this->input->post('…')" είναι η κλάση εισόδου CodeIgniter που συλλαμβάνει τα περιεχόμενα της καθολικής μεταβλητής $_POST.
  • Το "$this->opinion_poll_model->add_vote($this->input->post('vote'))" καλεί τη μέθοδο add_vote του μοντέλου για να προσθέσει την ψήφο στη βάση δεδομένων.

Δημιουργώντας τις απόψεις μας

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

opinion_poll_form.php 
<html>
<head>
    <title>
        JavaScript Libraries - Opinion Poll
    </title>
</head>

<body>
    <h2>JavaScript Libraries - Opinion Poll</h2>
    <p><b>What is your favorite JavaScript Library?</b></p>
    <form method="POST" action="index.php">
        <p>
            <input type="radio" name="vote" value="1" /> JQuery
            <br />
            <input type="radio" name="vote" value="2" /> MooTools
            <br />
            <input type="radio" name="vote" value="3" /> YUI Library
            <br />
            <input type="radio" name="vote" value="4" /> Glow </p>
        <p>
            <input type="submit" name="submitbutton" value="OK" />
        </p>
    </form>
</body>
</html>

Ας δημιουργήσουμε τώρα τη σελίδα αποτελεσμάτων results.php

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll Results</title>
    </head>
    <body>

        <h2>JavaScript Libraries - Opinion Poll Results</h2>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>

        <p><table><tr><td>

            <?php print($rows); ?>

        </tr></td></table></p>

        <p><a href="#">Return to voting page</a></p>
</body>
</html>

Δοκιμή της εφαρμογής μας

Υποθέτοντας ότι ο ριζικός κατάλογος της εφαρμογής σας είναι ciopinion, περιηγηθείτε στο http://localhost/ciopionpoll/

Δοκιμή πλαισίου PHP MVC

Κάντε κλικ στο κουμπί ΟΚ, θα δείτε το ακόλουθο μήνυμα ειδοποίησης

Δοκιμή πλαισίου PHP MVC

Ψηφίστε τον αγαπημένο σας υποψήφιο και κάντε κλικ στο OK Θα δείτε την παρακάτω σελίδα αποτελεσμάτων

Δοκιμή πλαισίου PHP MVC

Συμπέρασμα

Το CodeIgniter είναι ένα εύκολο στην εκμάθηση και χρήση πλαίσιο PHP MVC που μπορεί να μειώσει σημαντικά τον χρόνο που δαπανάται για την ανάπτυξη εφαρμογών.
Το CodeIgniter είναι ένα εύκολο στην εκμάθηση και χρήση πλαίσιο PHP MVC που μπορεί να μειώσει σημαντικά τον χρόνο που δαπανάται για την ανάπτυξη εφαρμογών.

Σύνοψη

  • Ένα πλαίσιο είναι ένα σύνολο βιβλιοθηκών που παρέχουν μερική υλοποίηση κοινών εργασιών.
  • Η PHP έχει μια σειρά από ανοιχτού κώδικα ώριμα και δοκιμασμένα πλαίσια MVC.
  • Μια καλή προσέγγιση ανάπτυξης διαχωρίζει τα δεδομένα από την παρουσίαση και ενθαρρύνει τη χρήση ενός μόνο σημείου εισόδου σε μια εφαρμογή.
  • Οι παραδοσιακές εφαρμογές PHP που ακολουθούν τις βέλτιστες πρακτικές σχεδιασμού εφαρμογών μπορούν να μεταφερθούν σε πλαίσια MVC με ελάχιστες τροποποιήσεις.