
Frameworkler, uygulama geliştirirken kullanılabilecek sınıfları, eklentileri ve fonksiyonları barındıran, yazılımcıya düzenli bir yapı sunan uygulama çatılarıdır. PHP için yazılmış irili, ufaklı pek çok framework bulunmaktadır ve günümüzde her yazılımcı en az bir tanesi ile haşır neşir olmalıdır. Ben de özellikle MVC kavramına yabancı olan arkadaşların yapıyı anlamalarına yardımcı olmak hem de küçük frameworklere bir alternatif olarak Titan'ı geliştirdim.
Titan, MVC yapısı ile geliştirilen, basit kullanımlı ve küçük bir PHP çatısıdır.
http://github.com/tkaratug/titan-mvc
Gereksinimler
- PHP 5.4 veya üzeri,
- MySQL 4.1.2 veya üzeri,
- Apache Mod Rewrite modülü.
Download
$ git clone git://github.com/tkaratug/titan-mvc
Kurulum
- Dosyaları indirin ve sunucunuza yükleyin.
Titan, yapı olarak Codeigniter'a benzer fakat küçük bir çatı olduğu için ondaki yeteneklerin hepsine sahip değildir. Bu yüzden Codeigniter kullanmış olanlar kolaylıkla adapte olacaklardır.
Dizin Yapısı
MVC tasarım deseni ile geliştirilen frameworkün dizin ve dosya yapısı aşağıdaki gibidir. Uygulama dosyalarınız '/app' dizini içerisinde olmalıdır. Css ve javascript dosyalarınız, görselleriniz ve diğer multimedia araçlarınız ise '/public' dizini içerisinde yer almalıdır.
|_ app/
| |_ config/
| |_ controllers/
| |_ core/
| |_ helpers/
| |_ models/
| |_ plugins/
| |_ views/
| |_ errors/
|_ public/
| |_ css/
| |_ images/
| |_ js/
URL Yapısı
http://siteadi.com/controller/method/parametre
Controllers
Controller'lar, Model ile View arasında köprü görevi görürler. View üzerinden gelen verileri işleyip modele gönderip, model'den dönen sonucu da tekrar view'a göndererek kullanıcıya ulaştırırlar. '/app/controllers' dizini içerisinde yer alırlar ve dosya isimleri mutlaka büyük harfle başlamalıdır.
Örnek Controller: (Ornek.php)
class Ornek extends Controller
{
function __construct()
{
parent::__construct();
}
public function index()
{
echo 'Merhaba Dünya!';
}
}
Yukarıdaki kod http://siteadi.com/ornek adresinde çalışacak ve sayfaya "Merhaba Dünya!" çıktısını basacaktır.
Views
View'lar web sayfasının ön yüzünü oluşturan html, css ve javascript kodlarını barındırırlar. '/app/views' dizini içerisinde yer alırlar ve controller tarafından yüklenirler.
Örnek View: (ornek_view.php)
<html>
<head>
<title>Titan MVC</title>
</head>
<body>
<h1>Merhaba Dünya!</h1>
</body>
</html>
Yukarıda oluşturulan view, controller tarafından yüklenerek aşağıdaki gibi çalıştırılır;
class Ornek extends Controller
{
function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('ornek_view');
}
}
Ek olarak controller içerisinde tanımlanan her türlü değişken view'a gönderilebilir ve orada kullanılabilir. Bunun için bir dizi tanımlanıp, view'a aktarılmak istenen veriler bu diziye eklenir. Daha sonra dizi, view yükleyicisine parametre olarak verilir;
$data['key'] = 'Değer';
$this->load->view('ornek_view', $data);
Gönderilen veri, view içerisinde aşağıdaki gibi kullanılabilir;
<?php echo $key; ?>
Models
Model dosyaları Titan içerisinde, database sorguları yapılmasını sağlar. PHP'deki PDO objesinden türetilen Model objesini kullanırlar. Aşağıda örnek bir model dosyası içeriği görebilirsiniz;
class Ornek_model extends Model
{
function ornekMethod($id)
{
return self::getRow("SELECT * FROM ornek_tablo WHERE id=?", array($id));
}
}
Model'ler controller tarafından aşağıdaki gibi yüklenirler.
$model = $this->load->model('Ornek_model');
$model->ornekMethod(3);
Model'ler ile çalışırken '/config' dizininde bulunan 'config.php' dosyası üzerinde, database bağlantısı için gerekli ayarlamalar yapılmalıdır.
Model objesi olarak, Musa AVCI tarafından yazılmış olan PDO MySQL sınıfını kullandım. Sorgu yapılarını ilgili makaleden inceleyebilirsiniz.
http://www.phpr.org/pdo-mysql-veritabani-sinifi/
Helpers & Plugins
Titan bünyesinde Helpers ve Plugins olmak üzere iki tip yardımcı kaynak bulunur.
- Helpers dosyaları '/app/helpers' dizini içerisinde bulunularlar ve php fonksiyonları barındırırlar.
- Plugins dosyaları '/app/plugins' dizini içerisinde bulunurlar ve yardımcı sınıfları barındırırlar.
Titan üzerinde mevcut olarak Input ve Session pluginleri bulunuyor. Input plugini, form verilerini yönetme imkanı sunarken, Session plugini oturum yönetimi sağlıyor. Siz de kullanacağınız yardımcı sınıf ve fonksiyonları ilgili dizinlere atarak sisteme dahil edebilirsiniz.
Helpers ve Plugins dosyalarını kullanmak için controller üzerinde yüklemek gerekir. Aşağıda helper ve plugin yüklemelerini görebilirsiniz;
// Helper Yükleme
$this->load->helper('ornek_helper');
// Plugin Yükleme
$ornek_plugin = $this->load->plugin('Ornek');
Sistem çalışırken otomatikman yüklenmesi istenen helper ve plugin dosyaları, '/app/config/' dizininde bulunan 'config.php' dosyası içinde, birden fazla ise aralarına virgül konarak tanımlanabilirler.
/app/config/config.php:
// Autoload Helpers
$config['helpers'] = ['ornek_helper'];
// Autoload Plugins
$config['helpers'] = ['ornek_plugin', 'ornek_plugin_2'];
Destek
Framework ile ilgili sorularınızı, görüşlerinizi ve önerilerinizi konu altında yorum yazarak ya da e-posta adresimden bana iletebilirsiniz. Bunu yaparken amacımın basit bir MVC katmanı oluşturmak olduğunu unutmamanızı rica ediyorum.
Ellerine sağlık dostum şayet imkanın olursa bir videolu anlatım yapabilir misin biz cahiller için. Nasıl kurulur ve 2-3 sayfalık basit bir web sitesi nasıl yapılır? gibi bir anlatımı olsa en azından yol göstericimiz olur, izler izler çözerdik. Okuyarak anlamamak gibi toplumsal bir sorunumuz var malum :/ sana da youtube kazancı olur hem O.o Teşekkürler, kolaylıklar.
Hocam ellerinize sağlık bu framework için ders videoları çekmeniz harika olur blog sistemi yazma gibi.
Yakın zamanda birkaç ders videosu çekmeyi düşünüyorum. İlginiz için teşekkürler.
Merhaba, eline sağlık basit ve hızlı bir fremawork olmuş, bir şey sormak istiyorum view içine tema1 diye bir klasör oluşturup içine tüm tema dosyalarımızı attık, controllerde home.php yi açıp, public function index() { $this->load->view('t1/index'); } ekledik tema içindeki index.php çalıştı sorun yok ama tema içindeki index..php deki css dosyasının başına ne eklemem gerekiyorki css dosyasını görsün.
css dosyalarını "/public/css" dizini içerisine atın. View içinde çağırırken <link rel="stylesheet" href="public/css/style.css"> şeklinde kullanabilirsiniz.
Merhaba :) Controller içinde oluşturduğumuz controller dosyasını urlden çağrılamıyor nesne mevcut değil hatası veriyor. ornek controllerini oluşturup url adresine http://siteadi.com/ornek dediğimizde hata veriyor.
Merhaba Erkan. Öncelikle .htaccess dosyasını açıp "RewriteBase /" satırının sonuna, proje dosyalarının bulunduğu dizini ekleyip eklemediğini kontrol et. Daha sonra oluşturduğun controller dosyasının ismini büyük harfle başlayacak şekilde düzelt. Ayrıca controller içerisinde tanımlanan sınıf ismi de büyük harfle başlamalı. Bunları düzeltirsen sorunun ortadan kalkacaktır.
Hocam çok az bir seviyede php bilgim var hatta yok denecek kadar az. Bu framework ile basit işlemleri yapabilir miyim ? Bunun için ne gerekiyor ?
Frameworklerleri kullanmadan önce o dile en azından orta derecede hakim olmanız gerekir. Özellikle nesne tabanlı programlama konusuna aşina olmalısınız.
Hocam ek olarak injection xss açıgı gibi güvenlik önlemleri için .php dosyalarını dahil etmeniz daha iyi olabilir ayrıca frameworkunuz için ders videoları çekseniz harika olur.
ellerinize sağlık harika iş çıkarmışsınız