PHP MVC Çerçevesi Eğitimi: CodeAteşleyici Örneği

PHP MVC çerçevesi nedir?

PHP MVC, uygulama verilerini ve iş mantığını (model) sunumdan (görünüm) ayıran bir uygulama tasarım modelidir. MVC, Model, Görünüm ve Denetleyici anlamına gelir.

Denetleyici modeller ve görünümler arasında aracılık eder.

MVC tasarım modelini bir araba ve sürücü olarak düşünün.

Araç, sürücünün (kontrolör) öndeki trafiği izlemek için kullandığı ön camlara (görünüm) ve ardından ileride ne gördüğüne bağlı olarak hız veya frene (model) sahiptir.

Neden PHP MVC Çerçevesini kullanmalısınız?

  • PHP MVC Framework'leri karmaşık teknolojilerle çalışmayı şu şekilde basitleştirir;
    • Tüm karmaşık uygulama ayrıntılarını gizleme
    • Uygulamalarımızı oluşturmak için kullanabileceğimiz standart yöntemler sağlamak.
    • Artan geliştirici üretkenliği; bunun nedeni, veritabanına bağlanma, kullanıcı girdisini temizleme vb. etkinliklerin temel uygulamasının halihazırda kısmen uygulanmış olmasıdır.
    • Profesyonel kodlama standartlarına bağlılık

PHP MVC Tasarım Deseni

Şimdi MVC tasarım modelinin her bir bileşenini kısaca tartışalım.

Model – bu bölüm iş mantığı ve uygulama verileriyle ilgilidir. Veri doğrulamaları gerçekleştirmek, verileri işlemek ve saklamak için kullanılabilir. Veriler nereden gelebilir;

  • düz bir dosya
  • veritabanı
  • XML belgesi
  • Diğer geçerli veri kaynakları.

kontrolör – bu, kullanıcıların sunucudan kaynak istekleriyle ilgilenen kısımdır.

Örnek olarak, kullanıcılar URL talebinde bulunduğunda …/index.php?products=list, denetleyici, ürün verilerini almak için ürün modelini yükleyecek ve ardından sonuçları liste görünümünde yayınlayacaktır.

Özetle denetleyici, talep edilen kaynaklara bağlı olarak modelleri ve görünümleri birbirine bağlar.

Görünümler – bu bölüm verilerin kullanıcıya sunulmasıyla ilgilidir. Bu genellikle HTML sayfaları biçimindedir.

PHP MVC çerçevesinin türleri

En iyi PHP çerçevesini seçmek zorlu bir iştir.

MVC'nin avantajlarından yararlanmak için kendi çerçevenizi yazmanıza gerek yok.

MVC çerçevelerinin nasıl çalıştığını anlamak için yalnızca MVC ile ilgili kendi uygulama tasarımınızı oluşturmaya çalışmalısınız.

MVC çerçevelerinin çalışma biçiminden memnun olduğunuzda, olgun ve zaten test edilmiş çerçevelere geçmelisiniz.

Aşağıdaki tablo, popüler php çerçevelerinden bazılarını ve her çerçevenin sunduğu özellikleri kısaca açıklamaktadır.

iskelet Açıklama

Codeateşleyici


Codeateşleyici


https://codeigniter.com/

En popüler PHP MVC çerçevelerinden biridir. Hafiftir ve kısa bir öğrenme eğrisine sahiptir. Web sitelerini ve uygulamaları hızlı bir şekilde oluşturmaya yardımcı olan zengin bir kitaplık kümesine sahiptir. OOP programlama konusunda sınırlı bilgisi olan kullanıcılar da bunu kullanabilir. CodeAteşleyiciyle çalışan uygulamalar şunlardır:


kohana


kohana


http://kohanaframework.org

Hiyerarşik Model Görünüm Kontrolcüsü (HMVC) mimarisine sahip, güvenli ve hafif bir çerçevedir. Geliştirme için zengin bir bileşen setine sahiptir.ping Uygulamaları hızla geliştirin. Kohana kullanan şirketler arasında şunlar yer almaktadır:


CakePHP'nin


CakePHP'nin


www.cakephp.org

Ruby on Rails'den sonra modellenmiştir. Yazılım tasarım kalıpları, konfigürasyon üzerinden konvansiyon, ActiveRecord vb. gibi kavramlarla tanınır. CakePHP'nin destekli uygulamalar şunları içerir;


Zend

www.framework.zend.com


Zend

Bu güçlü bir çerçevedir;

  • Güvenli, güvenilir, hızlı ve ölçeklenebilir
  • Web 2.0'ı ve web hizmetlerinin oluşturulmasını destekler.

Gibi satıcıların API'lerini içerir AmazonGoogle FlickrYahoo vb. için idealdir. Geliştirme için uygundur.ping İş uygulamaları. Zend destekli uygulamalar şunlardır:

  • Pimcore CMS,
  • DotKernel.

Zend çerçevesini kullanan şirketler arasında;

  • BBC
  • Cisco
  • Webex
  • Teklifler.com

Kamuoyu yoklama uygulamasının taşınması Codeateşleyici

Bu öğreticiBurada, bir PHP anket uygulaması oluşturduk. Bu kodu yeni bir uygulamaya taşıyacağız. Codeateşleyici

Kamuoyu yoklama uygulamasının taşınması Codeateşleyici

Şimdi kamuoyu yoklama uygulamamızı yeni platforma taşıyacağız. CodeAteşleyici. Uygulamamızın üç ana bileşene ayrıldığını hatırlayın;

  • Ön denetleyici – URL isteklerine yanıt veren ve istenen sayfayı döndüren kısımdır. Bu kod denetleyiciye gidecek
  • Model – bu, istenen verilere yanıt veren ve istenen verileri döndüren koddur. Bu kod modele girecek
  • Görünümler – bu, verilerin biçimlendirilmesinden ve görüntülenmesinden sorumlu koddur. Bu kod görünüme gidecek

    • Ciopinionpoll klasörüne göz atın
    • Açın DatabaseFunctions.php application/config dizininde bulunan dosya.
    • Aşağıdaki kod satırlarını bulun

Veritabanı yapılandırma ayarları

Veritabanı yapılandırma ayarları

  • Kullanıcı adını root olarak ayarlayın
  • Parolayı localhost kök parolanıza ayarlayın
  • Görüş_anketine veritabanı adı. Önceki derste oluşturulan veritabanını kullanacağımızı unutmayın.
  • Değişiklikleri kaydedin ve dosyayı kapatın.

Modelimizi Oluşturmak

Şimdi CI_Model'i genişletecek olan modelimizi oluşturacağız. CI_Model, CodeIgniter kütüphaneleri. Model, application/models klasöründe yer alacaktır. idea_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); 
        } 
   } 
?>

İŞTE,

  • “class Opinion_poll_model, CI_Model'i genişletiyor…”, CI_Model'i genişleten modelimizdir
  • “…ebeveyn:: __construct();” CI_Model yapıcısını çağırır
  • “$this->load->database();” uygulamamızın veritabanıyla etkileşim kurabilmesi için veritabanı kitaplığını yükler
  • “$this->db->” CodeIgniter'ın aktif geçmişi. Bunu kontrol edin. Link Aktif kayıt hakkında daha fazla bilgi için.

Denetleyiciyi Oluşturma Şimdi denetleyiciyi oluşturalım. Varsayılanı kullanacağız. Codeapplication/controllers/welcome.php dosyasında bulunan Igniter denetleyicisinin kaynak kodunu aşağıdaki kodla değiştirin.

<?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 */
?>

İŞTE,

  • “if (!tanımlanmış('BASEPATH')) çıkış('Doğrudan komut dosyası erişimine izin verilmiyor');” kullanıcıların denetleyici sınıfına doğrudan erişmemesini sağlar
  • “sınıf Hoş Geldiniz CI_Controller'ı genişletiyor…” denetleyicimiz CI_Controller sınıfını genişletiyor
  • “public function __construct()” CI_Controller'ın sınıf yapıcı yöntemini çağırır ve Opinion_poll_model modelimizi yükler
  • “public function index()…” ifadesi, index.php dosyasına yönlendirme yapan fonksiyondur. CodeIgniter'ın input sınıfı, bir oy verilip verilmediğini kontrol etmek, veritabanına eklemek ve ardından sonuçları görüntülemek için kullanılır. Input sınıfının post dizisi boşsa, oylama sayfası yüklenir.
  • “$this->input->post('…')” şudur: Code$_POST global değişkeninin içeriğini alan Igniter giriş sınıfı.
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))”, oyu veritabanına eklemek için modelin add_vote yöntemini çağırır.

Görüşlerimizi Oluşturmak

Önceki örnekten hatırlayacağınız üzere, biri oylama için diğeri sonuçlar için olmak üzere iki HTML sayfamız vardı. Görünümlerimizi oluşturmak için aynı HTML kodunu minimal değişikliklerle kullanacağız. application/views dizininde aşağıdaki dosyaları oluşturun

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>

Şimdi results.php sonuç sayfasını oluşturalım

<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>

Uygulamamızı test etme

Uygulamanızın kök dizininin ciopinion olduğunu varsayarak şuraya göz atın: http://localhost/ciopionpoll/

PHP MVC çerçeve testi

Tamam düğmesine tıklayın, aşağıdaki uyarı mesajını göreceksiniz

PHP MVC çerçeve testi

Favori adayınıza oy verin ve ardından Tamam'a tıklayın. Aşağıdaki sonuç sayfasını göreceksiniz

PHP MVC çerçeve testi

Sonuç

CodeIgniter, geliştirme süresini önemli ölçüde azaltabilen, öğrenmesi ve kullanımı kolay bir PHP MVC çerçevesidir.ping uygulamaları.
CodeIgniter, geliştirme süresini önemli ölçüde azaltabilen, öğrenmesi ve kullanımı kolay bir PHP MVC çerçevesidir.ping uygulamaları.

ÖZET

  • Çerçeve, ortak görevlerin kısmen uygulanmasını sağlayan bir dizi kitaplıktır.
  • PHP'nin bir dizi açık kaynak olgun ve test edilmiş MVC çerçevesi vardır.
  • İyi bir geliştirme yaklaşımı, verileri sunumdan ayırır ve bir uygulamada tek giriş noktasının kullanılmasını teşvik eder.
  • Uygulama tasarımının en iyi uygulamalarını takip eden geleneksel PHP uygulamaları, minimum değişiklikle MVC çerçevelerine taşınabilir.

Bu yazıyı şu şekilde özetleyin: