CodeIgniter MVC(Model View Controller) Çerçevesi ve Örnek

MVC nedir?

Model-View-Control için MVC standartları. Uygulamayı üç ana bileşene ayıran bir mimari desendir.

1. Model, iş mantığı ve veritabanı etkileşimleriyle ilgilenir

2. Denetleyici, model ile görünüm arasındaki etkinlikleri koordine eder

3. Veri sunumundan görünüm sorumludur

MVC mimari modelinin bazı avantajları şunlardır:

  • Gevşek bağlantı -bileşenler birbirinden bağımsız olarak bulunur ve çalışır.
  • Esneklik – bireysel bileşenlerde kolayca değişiklik yapılabilir
  • Artan verimlilik – proje üzerinde aynı anda birden fazla kişi çalışabilir. Ön uç geliştiriciler görünümler ve sunumlar üzerinde çalışabilirken, arka uç geliştiriciler modellere odaklanabilir ve sistem gevşek bir şekilde bağlandığı için günün sonunda çalışır.

Model

Model, veri kaynaklarıyla etkileşimden sorumludur. Bu genellikle bir veritabanıdır ancak istenen verileri sağlayan bir hizmet de olabilir. Kontrolörün aksine iş mantığının modellerde yer alması da yaygın bir uygulamadır. Bu uygulamaya genellikle şişman model sıska denetleyici adı verilir.

Model genellikle verileri veritabanına yazar, verileri düzenlemek, güncellemek ve silmek için bir mekanizma sağlar. Modern bir web uygulamasında modeller, veritabanıyla etkileşimi kolaylaştırmak için aktif kayıt gibi veri erişimi tasarım modellerini kullanır.

Örneğin CodeIgniter, modellere yardımcı olmak için yerleşik bir kitaplık olan Active Record'u kullanırken, Laravel gibi diğer çerçeveler veri erişimine yardımcı olan Eloquent Object Relational Mapper'ı (ORM) kullanır.

kontrolör

Denetleyici, kullanıcılardan gelen kaynak isteklerini dinler. Model ile görünüm arasında aracı görevi görür ve bazen bazı iş kurallarını da uygular. Denetleyicinin bir kullanıcıyı veritabanına kaydetme isteği aldığını varsayalım.

Denetleyici, tüm gerekli parametrelerin gönderildiğinden emin olmak için gönderilenler üzerinde veri doğrulaması gerçekleştirebilir. Bir şey eksikse kullanıcı, uygun hata mesajının görüntülendiği kayıt sayfasına yönlendirilir. Denetleyici ayrıca gönderilen e-posta adresinin zaten mevcut olup olmadığını kontrol ederek modelden daha fazla doğrulama gerçekleştirmesini isteyebilir. Tüm doğrulama kuralları geçerse denetleyici, işleme için verileri modele gönderir ve yanıtı bekler.

Model bilgiyi işleyip olumlu bir yanıt verdiğinde, denetleyici uygun görünümü yükler ve modelden döndürülen verileri parametre olarak iletir.

Görüntüle

Görünüm, son kullanıcıya sunulan verilerle ilgilidir. Web uygulamalarında görünümler genellikle HTML, CSS ve isteğe bağlı olarak içerir. JavaSenaryo. Görünümler minimum programlama kodu içerir. Görünümlerde bulunan kod genellikle verileri temizlemek veya kayıtları düzenlemek için bağlantılar oluşturmak üzere model veya yardımcı fonksiyondan parametre olarak alınan veri koleksiyonları arasında döngü oluşturmak için kullanılır. Çoğu modern web uygulaması genellikle kendi sözdizimini tanımlayan şablonlama motorlarını kullanır, bu daha çok sözde koda benzer ve tasarımcılar tarafından kolayca anlaşılabilir. CodeIgniter ile çalışırken, kısa PHP etiketleri ve kontrol yapıları kullanmak yaygın bir uygulamadır. CodeIgniter'da bir şeyi görüntülemek için, aşağıdaki kod kullanılabilir

<?=$title?>

Aksine

<?php
echo $title;
?>

Kontrol yapıları genellikle şu şekilde yazılır:

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

Yukarıdaki örnekte görebileceğiniz gibi, görünüm aşağıdakilerin bir kombinasyonunu kullanacaktır: PHP ve her şeyi saf PHP koduna dahil etmek yerine HTML.

MVC çerçeveleri nasıl çalışır?

Aşağıdaki resim MVC framework'ünün nasıl çalıştığını göstermektedir

MVC Çerçeveleri çalışır

Bir denetleyici, kullanıcıdan isteği alır, gerekirse veritabanı modeliyle etkileşime girer ve ardından sonucu, tarayıcının insan tarafından okunabilir bir formatta yorumladığı ve kullanıcıya gösterdiği HTML kodu biçiminde tarayıcıya geri gönderir.

CodeIgniter Denetleyici

Şimdi yukarıdaki URL'yi web tarayıcısına yüklediğimizde ne olduğunu analiz edelim.

Welcome.php denetleyicisinin bulunduğu uygulama/kontrolörler dosyasını açın

Aşağıdaki kodu görebilmelisiniz

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

İŞTE,

  • define('BASEPATH') VEYA çıkış('Doğrudan komut dosyası erişimine izin verilmiyor'); istek index.php aracılığıyla gelmediyse denetleyiciye doğrudan erişimi engeller. bu güvenlik amaçlıdır.
  • Hoş Geldiniz sınıfı CI_Controller'ı genişletir {…} Hoş Geldiniz denetleyici sınıfını tanımlar ve CI_Controller üst sınıfını genişletir
  • public function index(){…}, URL'ye yanıt veren dizin yöntemini tanımlar http://localhost:3000
    • $this->load->view('welcome_message'); application/views dizininde bulunan karşılama_mesajı görünümünü yükler

Artık index metodunu aşağıdaki gibi güncelleyeceğiz

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

İŞTE,

  • $this->load->model('müşteri_modeli'); Müşteri modelini yükler.
  • $veri['müşteri'] = $this->customers_model->get_customer(3); customer_model'in get_customer yöntemini çağırır ve parametre 3'ü aktarır. Bu örnekte değeri sabit kodladık ancak gerçek hayattaki uygulamalarda bu, URI'den gelen bir parametre olacaktır.
  • $this->load->view('welcome_message',$data); Welcome_message görünümünü yükler ve $data değişkenini görünüme aktarır

CodeIgniter Modeli

Şimdi yukarıdaki kodda bahsettiğimiz view’ı oluşturalım. Basitlik açısından, modelimiz veritabanı ancak statik bir müşteri kaydı döndürecektir. Sonraki derslerde veritabanlarıyla çalışacağız.

Uygulama/modellerde Customers_model.php dosyası oluşturun

Aşağıdaki kodu ekleyin

<?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;
}
}

İŞTE,

  • Class Customers_model, CI_Model'i genişletir {…}, CI_Model'i genişleten Customers_model modelini tanımlar.
  • public function get_customer($id) {…} müşteri kimliğini temel alarak müşteri alma yöntemini tanımlar
  • $data[…] hayali müşterimizin statik değerlerini tanımlar. Bu veritabanından döndürülen bir satır olmalıdır.
  • $veri döndür; müşteri verilerini döndürür.

Yani bizim modelimiz için. Şimdi hoş geldiniz_message görünümünü değiştirelim

Bulunduğunuz yerde bulunanwelcome_message.php dosyasını açın

application/views/welcome_message.php

Kodu aşağıdakiyle değiştirin

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

Değişiklikleri kaydedin

Aşağıdaki URL'yi web tarayıcısına yükleyin

http://localhost:3000/

Aşağıdaki resimde gösterildiği gibi müşteri kartını görebilmeniz gerekmektedir.

CodeIgniter Modeli

ÖZET

  • MVC uygulamayı üç ana bileşene ayıran bir mimari desendir
  • Model, veri kaynaklarıyla etkileşimden sorumludur
  • Denetleyici, kullanıcılardan gelen kaynak isteklerini dinler
  • Web uygulamalarında görünümler genellikle HTML, CSS ve isteğe bağlı olarak içerir. JavaSenaryo
  • Bir denetleyici, kullanıcıdan isteği alır, gerekirse veritabanı modeliyle etkileşime girer ve ardından sonucu HTML kodu biçiminde tarayıcıya geri gönderir.