Bu sınıf, saf PHP ile yazılmış, framework bağımsız, sade ama güçlü bir ORM yapısıdır. PDO kullanır, Singleton deseniyle bağlantıyı tek seferde kurar ve Laravel benzeri kullanım kolaylığı sunar.
✅ PDO ile güvenli bağlantı
✅ Singleton bağlantı (tek sefer açılır)
✅ define() ile kolay yapılandırma
✅ Kolon seçimi, where(), join(), groupBy() gibi SQL kolaylıkları
✅ save(), delete(), softDelete() ve restore() gibi model işlemleri
✅ fillable, guarded ile güvenli veri setleme
✅ validate() ile model bazlı doğrulama
✅ hasMany, belongsTo, with() ile ilişkiler
✅ toArray(), toJson() dönüşümleri
✅ Sayfalama (paginate())
config.php gibi bir dosyada tanımlayın:
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'veritabani');
define('DB_CHARSET', 'utf8mb4');
define('DB_USER', 'root');
define('DB_PASS', '');require 'config.php';
require 'Orm.php';Her modelin kendi sınıfı olmalı. Örneğin:
class Kullanici extends Orm {
protected $fillable = ['ad', 'email'];
protected $tablo = 'kullanicilar';
}Not: Alternatif olarak constructor ile tablo adı da verilebilir:
new Orm('kullanicilar')
$kullanici = new Kullanici();
$veriler = $kullanici->where('aktif', 1)->orderBy('id', 'DESC')->get();$kullanici = (new Kullanici())->find(1);$k = new Kullanici();
$k->fill([
'ad' => 'Tanju',
'email' => '[email protected]'
]);
$k->save();$k = (new Kullanici())->find(1);
$k->email = '[email protected]';
$k->save();$k = (new Kullanici())->find(1);
$k->delete(); // softDelete() özelliği açıksa deleted_at kolonunu güncellerclass Kullanici extends Orm {
public function yazilar() {
return $this->hasMany(Yazi::class, 'kullanici_id');
}
}class Yazi extends Orm {
public function yazar() {
return $this->belongsTo(Kullanici::class, 'kullanici_id');
}
}$veriler = (new Yazi())->with('yazar')->get();class Kullanici extends Orm {
protected $rules = [
'ad' => ['required', 'min:3'],
'email' => ['required', 'email', 'unique']
];
}$k = new Kullanici();
$k->fill($_POST);
if ($k->validate()) {
$k->save();
} else {
print_r($k->getErrors());
}$k = (new Kullanici())->find(1);
$array = $k->toArray();
$json = $k->toJson();$k = new Kullanici();
$sonuc = $k->where('aktif', 1)->paginate(2, 10); // 2. sayfadan 10 kayıt getir
// $sonuc['data'], $sonuc['toplam'], $sonuc['sayfa_sayisi'] vs.- Her model sınıfı
Ormsınıfından türetilmeli - Model başında tablo adı belirtebilir ya da constructor'da verebilirsin
softDelete,timestamps,fillable,guardedgibi özellikler model özelinde açılıp kapatılabilir
Bu ORM sınıfı, sade projeler için ideal bir başlangıçtır. Pull request veya issue ile katkıda bulunmaktan çekinme! 🙌
MIT License