CodeIgniter MVC (Model View Controller) Çerçevesi Örneği

⚡ Akıllı Özet

CodeIgniter MVC çerçevesi, bir uygulamayı Model, Görünüm ve Denetleyici olmak üzere üç bölüme ayırır. Model veri ve iş mantığını yönetir, denetleyici istekleri koordine eder ve görünüm sonucu sunar; bu da gevşek bağlantı, esneklik ve daha yüksek geliştirici verimliliği sağlar.

  • 🏗️ Temel Desen: MVC, bir uygulamayı model, görünüm ve denetleyici bileşenlerine ayırır.
  • 💾 Model: Veri kaynağıyla etkileşim kurar ve genellikle Active Record aracılığıyla iş mantığını barındırır.
  • 🎛️ denetleyici: Gelen istekleri dinler, girdileri doğrular ve model ile görünümü koordine eder.
  • 🖼️ Görünüm: Verileri HTML, CSS ve minimal PHP olarak, karmaşık mantıktan uzak bir şekilde sunar.
  • 🔗 Gevşek Kaplin: Bileşenler bağımsız olarak çalıştığı için ön uç ve arka uç işlemleri paralel olarak yürütülebilir.
  • Kısa Etiketler: CodeIgniter görünümleri, daha temiz şablonlar için genellikle kısa PHP echo etiketleri kullanır.
  • 🔁 İstek Akışı: Denetleyici, model, görünüm ve ardından HTML, tarayıcıya geri gönderiliyor.

CodeIgniter MVC Çerçevesi

MVC nedir?

MVC, Model-View-Controller'ın kısaltmasıdır. Uygulamayı üç ana bileşene ayıran bir mimari modeldir:

  1. Model, iş mantığı ve veritabanı etkileşimleriyle ilgilenir.
  2. Denetleyici, model ve görünüm arasındaki faaliyetleri koordine eder.
  3. View, verilerin sunumundan sorumludur.

Aşağıda MVC mimari modelinin bazı avantajları yer almaktadır:

  • Gevşek bağlantı – bileşenler birbirinden bağımsız olarak var olur ve işlev görür.
  • Esneklik – bireysel bileşenlerde kolayca değişiklik yapabilirsiniz.
  • Artan verimlilik – birden fazla kişi aynı anda proje üzerinde çalışabilir. Ön uç geliştiriciler görünümler ve sunum üzerinde çalışırken, arka uç geliştiriciler modellere odaklanabilir ve sistem gevşek bir şekilde bağlı olduğundan, sonuçta her şey birlikte çalışır.

Model

Model, veri kaynaklarıyla etkileşimden sorumludur. Bu genellikle bir veritabanıdır, ancak istenen veriyi sağlayan bir servis de olabilir. İş mantığını denetleyici yerine modellerde tutmak da yaygın bir uygulamadır. Bu uygulama genellikle "şişman model, ince denetleyici" olarak adlandırılır.

Model genellikle verileri veritabanına yazar ve verilerin düzenlenmesi, güncellenmesi ve silinmesi için bir mekanizma sağlar. Modern bir web uygulamasında, modeller veritabanıyla etkileşimi kolaylaştırmak için Active Record gibi veri erişim tasarım kalıplarını kullanır.

Örneğin, CodeIgniter, modelleri desteklemek için yerleşik bir Active Record kütüphanesi kullanırken, Laravel gibi diğer çerçeveler veri erişimi için Eloquent Nesne İlişkisel Eşleyici (ORM) kullanır.

kontrolör

Denetleyici, kullanıcılardan gelen kaynak taleplerini dinler. Model ve görünüm arasında aracı görevi görür ve bazen bazı iş kurallarını da uygular. Diyelim ki denetleyici, veritabanına bir kullanıcı kaydetme talebi aldı.

Denetleyici, gerekli tüm parametrelerin mevcut olduğundan emin olmak için gönderilen veriler üzerinde veri doğrulama işlemi gerçekleştirebilir. Bir şey eksikse, kullanıcı uygun hata mesajıyla kayıt sayfasına yönlendirilir. Denetleyici ayrıca modelden daha fazla doğrulama yapmasını isteyebilir; örneğin, gönderilen e-posta adresinin zaten mevcut olup olmadığını kontrol etmesini isteyebilir. Tüm doğrulama kuralları başarılı olursa, denetleyici verileri işlenmek üzere 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. JavaSenaryoGörünümler, genellikle modelden alınan veri koleksiyonlarında döngü oluşturmak veya verileri temizlemek veya düzenleme bağlantıları oluşturmak için yardımcı bir işlev gibi minimum programlama kodu içerir. Çoğu modern web uygulaması, tasarımcıların anlayabileceği kendi sözde kod benzeri sözdizimine sahip şablon motorları kullanır. Çalışırken CodeIgniter'da kısa PHP etiketleri ve kontrol yapıları kullanmak yaygın bir uygulamadır. Bir şeyi görüntülemek için CodeIgniter için aşağıdaki kodu kullanabilirsiniz:

<?=$title?>

Bunun 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 örnekten de görebileceğiniz gibi, görünüm bir kombinasyon kullanıyor. PHP ve her şeyi saf PHP koduna dahil etmek yerine HTML.

MVC Çerçeveleri Nasıl Çalışır?

Aşağıdaki görsel, MVC çerçevesinin nasıl çalıştığını göstermektedir.

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

Denetleyici, kullanıcıdan gelen isteği alır, gerekirse veritabanı modeliyle etkileşime girer ve ardından sonucu HTML kodu biçiminde tarayıcıya geri gönderir; tarayıcı bu kodu insan tarafından okunabilir bir biçime dönüştürür ve kullanıcıya görüntüler.

CodeAteşleyici Kontrolörü

Şimdi de yükleme işlemi sırasında neler olduğunu inceleyelim. URL Web tarayıcınızda açın. application/controllers klasöründe bulunan Welcome.php dosyasını açın. Aşağıdaki kodu görmelisiniz:

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

İşte:

  • `defined('BASEPATH') OR exit('No direct script access allowed');` ifadesi, isteğin `index.php` üzerinden gelmemesi durumunda denetleyiciye doğrudan erişimi engeller. Bu, güvenlik amacıyla yapılır.
  • `class Welcome extends CI_Controller {…}`, Welcome denetleyici sınıfını tanımlar ve üst sınıf olan CI_Controller'dan miras alır.
  • public function index(){…} fonksiyonu, aşağıdaki sorguya yanıt veren index metodunu tanımlar: URL http://localhost:3000.
  • `$this->load->view('welcome_message');` komutu, `application/views` dizininde bulunan `welcome_message` görünümünü yükler.

Şimdi index yöntemini 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.
  • $data['customer'] = $this->customers_model->get_customer(3); ifadesi, customers_model sınıfının get_customer metodunu çağırır ve 3 parametresini iletir. Bu örnekte değeri sabit olarak belirledik, ancak gerçek uygulamalarda bu, URI'den gelen bir parametre olacaktır.
  • `$this->load->view('welcome_message',$data);` kodu, `welcome_message` görünümünü yükler ve `$data` değişkenini iletir.

CodeAteşleyici Model

Şimdi yukarıdaki kodda referans verilen modeli oluşturalım. Basitlik açısından, modelimiz diğer bileşenlerle etkileşime girmeyecektir. veritabanı Ancak bu, statik bir müşteri kaydı döndürecektir. Sonraki eğitimlerde veritabanlarıyla çalışacağız. application/models klasöründe Customers_model.php adında bir dosya oluşturun ve 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) {…} fonksiyonu, müşteri kimliğine göre get_customer yöntemini tanımlar.
  • $data[…], kurgusal 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.

Modelimiz bu kadar. Şimdi welcome_message görünümünü değiştirelim. Şu konumda bulunan welcome_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 ve aşağıdakileri yükleyin. URL Web tarayıcısında: http://localhost:3000/Aşağıdaki resimde gösterildiği gibi müşteri kartını görmelisiniz.

Müşteri bilgileri kartı şu kuruluş tarafından oluşturulmuştur: Codeateşleyici

SSS

Bu, iş mantığının modelde yer aldığı anlamına gelir.ping Denetleyici ince yapılı ve istekleri yönlendirmeye odaklanmıştır. Bu, mantığın yeniden kullanılabilir olmasını ve denetleyicinin okunmasını ve test edilmesini kolaylaştırır.

Bir görüş yalnızca veri sunmalıdır. Keeping Bu mantık, sorumlulukları birbirinden ayırır; böylece tasarımcılar iş kurallarına dokunmadan düzeni düzenleyebilir ve aynı veriler farklı görünümlerde gösterilebilir.

Active Record, modellerin veritabanına ham SQL yerine metot çağrılarıyla erişip yazmasını sağlayan yerleşik bir sorgu oluşturucudur. Ayrıca, SQL enjeksiyonunu önlemeye de yardımcı olur.ping değerleri.

Yapay zeka, bir özelliğin tanımından yola çıkarak eşleşen denetleyici, model ve görünüm dosyaları oluşturabilir ve isimlendirmeyi tutarlı tutabilir. RevÇalıştırmadan önce oluşturulan sorguları ve doğrulama işlemlerini inceleyin.

Kısa `echo` etiketi, bir değeri görünümde yazdırmanın kompakt bir yoludur. Tam `php` etiket bloğu, ifadeler ve kontrol yapıları için kullanılır. İkisi de çıktı açısından eşdeğerdir, ancak kısa etiketler görünümleri düzenli tutar.

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