PHP MVC Framework Eğitimi: CodeIgniter Örneği

İçindekiler:

Anonim

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, View & Controller 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.

Otomobilde, sürücünün (kontrolör) öndeki trafiği izlemek için kullandığı ön camlar (görünüm), ardından da ileriye baktığına bağlı olarak hız veya fren (model) vardır.

Neden PHP MVC Framework kullanmalı?

  • PHP MVC Frameworks, karmaşık teknolojilerle çalışmayı basitleştirir;
    • Tüm karmaşık uygulama ayrıntılarını gizlemek
    • 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ı girdisinin sterilize edilmesi gibi faaliyetlerin temel uygulamasının zaten kısmen uygulanmış olmasıdır.
    • Profesyonel kodlama standartlarına bağlılık

Bu eğitimde öğreneceksiniz-

  • PHP MVC Tasarım Kalıbı
  • PHP MVC çerçevesi türleri
  • Kamuoyu yoklaması uygulamasını CodeIgniter'a taşıma
  • Veritabanı yapılandırma ayarları
  • Modelimizi Oluşturmak
  • Görüşlerimizi Oluşturmak
  • Uygulamamızı test ediyoruz

PHP MVC Tasarım Kalıbı

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

Model - bu bölüm iş mantığı ve uygulama verileri ile ilgilidir. Veri doğrulamaları yapmak, verileri işlemek ve saklamak için kullanılabilir. Veriler;

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

Kontrolör - bu kısım, kullanıcıların sunucudan kaynak taleplerini ele alan kısımdır.

Örnek olarak, kullanıcılar… /index.php?products=list URL'sini talep ettiğinde, denetleyici ürün verilerini almak için ürün modelini yükleyecek ve ardından sonuçları liste görünümünde çıkaracaktır.

Özetle, denetleyici, istenen 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çevesi türleri

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

MVC'nin avantajlarından yararlanmak için kendi çerçevenizi yazmak zorunda değilsiniz.

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

MVC çerçevelerinin çalışma şeklinden memnun olduğunuzda, olgun ve önceden test edilmiş çerçevelere geçmelisiniz.

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

Çerçeve Açıklama
CodeIgniter 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ızla oluşturmaya yardımcı olan zengin bir kitaplık grubuna sahiptir. Sınırlı OOP programlama bilgisine sahip kullanıcılar da kullanabilir. CodeIgniter destekli uygulamalar şunları içerir;
  • https://www.pyrocms.com/
  • http://www.shopigniter.com/
Kohana http://kohanaframework.org Hiyerarşik Model Görüntüleme Denetleyicisi HMVC güvenli ve hafif bir çerçevedir. Uygulamaları hızla geliştirmek için zengin bir bileşen setine sahiptir. Kohana'yı kullanan şirketler arasında;
  • https://go.wepay.com/
  • https://kids.nationalgeographic.com/
  • https://www.sittercity.com/
CakePHP www.cakephp.org Ruby on raylar üzerine modellenmiştir. Yazılım tasarım örüntüleri, yapılandırma üzerinde kural, ActiveRecord vb. Gibi kavramlarla bilinir. CakePHP destekli uygulamalar şunları içerir;
  • http://invoicemachine.com/
  • http://www.fmylife.com/
www.framework.zend.com Zend Güçlü bir çerçevedir;
  • Güvenli, güvenilir, hızlı ve ölçeklenebilir
  • Web 2.0'ı ve web hizmetlerinin oluşturulmasını destekler.
Amazon, Google, Flickr, Yahoo gibi satıcıların API'lerini içerir. İş uygulamaları geliştirmek için idealdir. Zend destekli uygulamalar şunları içerir;
  • Pimcore CMS,
  • DotKernel.
Zend çerçevesini kullanan şirketler arasında;
  • BBC
  • Cisco
  • Webex
  • Teklifler.com

Kamuoyu yoklaması uygulamasını CodeIgniter'a taşıma

Bu eğiticide, bir PHP anket uygulaması oluşturduk. Burada, bu kodu CodeIgniter'a taşıyacağız

  • CodeIgniter'ın en son sürümünü web sitelerinden indirin.
  • Sıkıştırılmış dosyanın içeriğini web sunucusu dizininizdeki geliştirme dizininize çıkarın. Bu derste klasör adı olarak ciopinionpoll kullanacağız.
  • Http: // localhost / ciopinionpoll / URL'sine göz atın

Şimdi fikir anketi uygulamamızı CodeIgniter'a taşıyacağız. Uygulamamızın üç ana bileşene ayrıldığını hatırlayın;

  • Ön denetleyici - bu, URL isteklerine yanıt veren ve istenen sayfayı döndüren bölümdür. Bu kod denetleyiciye girecek
  • 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 girecek
    • Ciopinionpoll klasörüne göz atın
    • Application / config dizininde bulunan database.php dosyasını açın.
    • Aşağıdaki kod satırlarını bulun

Veritabanı yapılandırma ayarları

  • Kullanıcı adını root olarak ayarlayın
  • Parolayı localhost kök parolanız olarak ayarlayın
  • İdea_poll için veritabanı adı. Önceki derste oluşturulan veritabanını kullanacağımızı unutmayın.
  • Değişiklikleri kaydedin ve dosyayı kapatın.

Modelimizi Oluşturmak

Daha sonra CI_Model'i genişletecek modelimizi oluşturacağız. CI_Model, CodeIgniter kitaplıklarının bir parçasıdır. Model application / models idea_poll_model.php içinde yer alacaktır.

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 .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}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şletir…" CI_Model'i genişleten modelimizdir
  • “… Parent :: __construct ();” CI_Model yapıcısını çağırır
  • "$ This-> load-> database ();" veritabanı kitaplığını yükler, böylece uygulamamız veritabanıyla etkileşime girebilir.
  • "$ This-> db->", CodeIgniter'ın aktif kaydıdır. Aktif kayıt hakkında daha fazla bilgi için bu bağlantıyı kontrol edin.

Denetleyicimizi Oluşturmak Şimdi denetleyiciyi oluşturalım. Application / controllers / welcome.php'de bulunan varsayılan CodeIgniter denetleyicisini kullanacağız. Kaynak kodlarını aşağıdaki kodla değiştirin.

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

İŞTE,

  • "İf (! Defined ('BASEPATH')) exit ('Doğrudan komut dosyası erişimine izin verilmez');" kullanıcıların denetleyici sınıfına doğrudan erişmemesini sağlar
  • "Hoş Geldiniz sınıfı, CI_Controller'ı genişletir…" denetleyicimiz CI_Controller sınıfını genişletir
  • "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 ()…”, index.php ile eşleşen işlevdir. bir oylama gönderilip gönderilmediğini kontrol etmek için CodeIgniter'ın girdi sınıfını kullanır, onu veritabanına ekler ve ardından sonuçları görüntüler. Giriş sınıfının post dizisi boşsa, oylama sayfasını yükler.
  • "$ This-> input-> post ('…')”, $ _POST genel değişkeninin içeriğini toplayan CodeIgniter girdi sınıfıdır.
  • "$ This-> idea_poll_model-> add_vote ($ this-> input-> post ('oy')), oylamayı veritabanına eklemek için modelin add_vote yöntemini çağırır.

Görüşlerimizi Oluşturmak

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

opinion_poll_form.phpJavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript Library?

JQuery
MooTools
YUI Library
Glow

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

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:

Return to voting page

Uygulamamızı test ediyoruz

Uygulamanızın kök dizininin ciopinion olduğunu varsayarak, http: // localhost / ciopionpoll / adresine gidin.

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

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

Sonuç

CodeIgniter, uygulamaları geliştirmek için harcanan zamanı büyük ölçüde azaltabilen, öğrenmesi ve kullanması kolay bir PHP MVC çerçevesidir.

Özet

  • Çerçeve, ortak görevlerin kısmi uygulanmasını sağlayan bir kitaplık kümesidir.
  • PHP, bir dizi açık kaynak, olgun ve test edilmiş MVC çerçevesine sahiptir.
  • İyi bir geliştirme yaklaşımı, verileri sunumdan ayırır ve bir uygulamaya 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.