PHP ile MVC (Model-View-Controller) Mimarisi Uygulaması
PHP, web geliştirme dünyasında yaygın olarak kullanılan bir programlama dilidir. Güçlü ve esnek yapısıyla birçok geliştiricinin tercihi olan PHP, MVC (Model-View-Controller) mimarisi ile birleştiğinde oldukça düzenli ve yönetilebilir projeler geliştirilmesine olanak sağlar. Bu makalede, PHP ile MVC mimarisini derinlemesine inceleyecek ve adım adım bir uygulama geliştireceğiz.
MVC Mimarisi Nedir?
Model-View-Controller (MVC), yazılım mimarisini üç ana bileşene ayırır:
– Model: Uygulamanın veri katmanını temsil eder. Veritabanı ile iletişim kurar ve veri üzerinde işlem yapar.
– View: Kullanıcıya gösterilecek olan arayüzü oluşturur. Modelden gelen veriyi alır ve kullanıcıya sunar.
– Controller: Model ve View arasında köprü görevi görür. Kullanıcıdan gelen talepleri alır, işleyip Model’e yönlendirir ve sonuçları View’e aktararak gösterir.
PHP ile MVC Mimarisi Kurulumu
MVC mimarisine geçiş yapmadan önce gerekli olan temel dosya yapısını oluşturalım:
“`
/mvc-app/
/controllers/
/models/
/views/
/core/
.htaccess
index.php
“`
1. Core Yapısı Oluşturma
MVC yapısının çekirdeği olan core
klasörünü oluşturalım. Bu klasörde, temel sınıfları ve yöntemleri barındıran core/App.php
ve core/Controller.php
dosyalarını oluşturacağız.
core/App.php
“`php
class App {
// URL’yi ayrıştırma
protected $controller = ‘home’;
protected $method = ‘index’;
protected $params = [];
public function __construct() {
$url = $this->parseUrl();
// Controller kontrolü ve yükleme
if (file_exists(‘../mvc-app/controllers/’ . $url[0] . ‘.php’)) {
$this->controller = $url[0];
unset($url[0]);
}
require_once ‘../mvc-app/controllers/’ . $this->controller . ‘.php’;
$this->controller = new $this->controller;
// Method kontrolü
if (isset($url[1])) {
if (method_exists($this->controller, $url[1])) {
$this->method = $url[1];
unset($url[1]);
}
}
$this->params = $url ? array_values($url) : [];
call_user_func_array([$this->controller, $this->method], $this->params);
}
public function parseUrl() {
if (isset($_GET[‘url’])) {
return explode(‘/’, filter_var(rtrim($_GET[‘url’], ‘/’), FILTER_SANITIZE_URL));
}
}
}
“`
core/Controller.php
“`php
class Controller {
public function model($model) {
require_once ‘../mvc-app/models/’ . $model . ‘.php’;
return new $model();
}
public function view($view, $data = []) {
require_once ‘../mvc-app/views/’ . $view . ‘.php’;
}
}
“`
2. Controller Yapısı Oluşturma
İhtiyacımız olan ilk controller dosyasını controllers/Home.php
içinde oluşturalım.
controllers/Home.php
“`php
class Home extends Controller {
public function index($name = ‘Guest’) {
$user = $this->model(‘User’);
$user->name = $name;
$this->view(‘home/index’, [‘name’ => $user->name]);
}
}
“`
3. Model Yapısı Oluşturma
Uygulamanızın veri işleme bölümünü models/User.php
dosyasında oluşturalım.
models/User.php
“`php
class User {
public $name;
}
“`
4. View Yapısı Oluşturma
Kullanıcıya sunulacak görünümü views/home/index.php
dosyasında tanımlayalım.
views/home/index.php
“`php
Selam, !
“`
5. Ana Giriş Dosyası
MVC mimarimizi aktif hale getirmek için index.php
dosyasını yapılandıralım.
index.php
“`php
require_once ‘core/App.php’;
require_once ‘core/Controller.php’;
$app = new App();
“`
6. .htaccess Dosyası
URL yönlendirmelerini düzgün hale getirmek için .htaccess
dosyası ayarlayın.
“`apache
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
“`
Performans İçin Uygun Sunucu Seçimi
Web uygulamalarınızın yüksek performansla çalışabilmesi için uygun bir sunucu hizmeti seçimi büyük önem taşır. Örneğin, cloud sunucu seçenekleri ile, kaynaklarınızı esnek bir şekilde kullanabilir, büyüyen projeleriniz için gerekli altyapıyı sağlayabilirsiniz. Ayrıca, VPS sunucu çözümleri ile uygun maliyetli ve ölçeklenebilir bir yapı kurarak projenizi ekonomik bir şekilde yönetebilirsiniz.
Bu makalenin amacı, PHP ile MVC mimarisi kurarken izlenecek adımları açıklamaktır. Profesyonel bir web geliştirme ortamı oluşturmak için önerilen yöntemleri izleyebilir ve projelerinizde daha temiz, düzenli bir kod yapısı elde edebilirsiniz. Unutmayın, iyi yapılandırılmış bir uygulama hem kullanıcı deneyimini hem de geliştirici verimliliğini mükemmel seviyelere taşır.