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.

MVC nedir?
MVC, Model-View-Controller'ın kısaltmasıdır. Uygulamayı üç ana bileşene ayıran bir mimari modeldir:
- Model, iş mantığı ve veritabanı etkileşimleriyle ilgilenir.
- Denetleyici, model ve görünüm arasındaki faaliyetleri koordine eder.
- 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.
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.


