PHP Basit / yeniden CRUD (NO famework veya büyük sınıflar)

5 Cevap php

Ben bir proje gibi bir PHP CMS üzerinde çalışıyorum ve ben PHP CRUD işlevselliği ile ilgili en uygun yolu bulmak için çalışıyorum.

Son derece yeniden kullanılabilir işlevleri ve kod parçacıkları oluşturmak gibi - (... Seni çok bu kabul etmeyeceğini biliyorum hiçbir OOP) ve mümkün olan her şeyi, hem de basit ve hafif tutarak tasarlanmıştır CMS usul PHP tamamen programlanır .

CMS birden fazla modül ihtiyaç temelinde aktif / yüklenmesini sağlar. Bu modüller, farklı içerik türlerini tanımlamak yüzden muhtemelen sadece birkaç isim sayfaları, haberler, bloglar gibi bir şey sahip sona erecek.

Bu içerik türlerinin her biri için ben CRUD işlemleri oluşturmak zorunda olacak ve şimdi ben bunu başarmak için en uygun yolu bulmaya çalışıyorum.

Bir gereksinimi bu içerik türlerinin her biri için formu (ekleme ve düzenleme her ikisi için) tek bir dış dosyada bulunan olacağını ve bir artı olacaktır sunucu tarafı giriş doğrulama entegre etmek için bir yol varsa.

5 Cevap

CRUD işlemleri ile sadece (sıkıcı) veritabanı sorgularını demek?

Sen gibi kolayca veritabanı içeriği türleri arasında birkaç ortak alanlar dışında, belirli bir içerik türü için tüm verileri bir metin alanında bir tefrika ilişkisel dizi olarak kurulum depolanır böylece.

Bu şekilde sadece CRUD fonksiyonları geçirilen veriler sadece körü körüne tefrika beri herhangi bir içerik türünü CRUD sorgular 1 set gerekir.

Örneğin, içerik başlık, oluşturulan / güncellenme tarihi, etiketleri ve kısa bir açıklama ortak veri olarak kabul edilir beyan söylüyorlar. Oradan bir blog ve bir sayfa içerik türü var.

Ben belki gibi bir veritabanı tablosu oluşturmak olacaktır:

CREATE TABLE `content` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR  NOT NULL,
  `short_description` TEXT  NOT NULL,
  `tags` TEXT ,
  `data` TEXT ,
  `content_type` INT  NOT NULL,
  `created_at` DATETIME  NOT NULL,
  `updated_at` DATETIME  NOT NULL,
  PRIMARY KEY (`id`)
)

* (Devam edin ve biz CONTENT_TYPE için başvuru tabloları oluşturmak olacak varsayıyorum) *

Blog "pingbacks" ve sayfa vücuda hiçbir şey ama gerektirebilir gibi verileri gerektirebilir ederken, sadece bir blog için aşağıdaki örnekte olduğu gibi bir şey çıktı depolamak:

$data = serialize(array(
    "body" => "Lorem ipsum",
    "pingbacks" => array()
));

Eğer içerik türüne göre seçilen bir forma düzenleme için verileri unserialize veritabanından veri kapmak zaman güncellemeler, kolaydır. Aynı şekilde çalışır gösteriliyor, sadece içerik türüne göre bir şablon kapmak ve dizgilenmemiş veri dizisi gönderin. Şablon bir $ veri ['pingbacks'] alır sadece, veri depolanan nasıl endişe gerekiyor asla.

Formlar için, benim önerim, anti OOP sözden ve bir form nesil kütüphane bulmaktır. Eğer Zend_Form Zend_Config ve Zend_Validate gelen kullanarak çerçeveden ayıklamak Eğer Zend Framework (bütün Zend_Config Bu durumda tutarındadır ) XML ve INI dosyaları yüklemek ve travers için uygun bir arayüz hayat gerçekten güzel yapar. Sen gibi "ortak alanlar" kaldırarak, filtrelenmiş verileri kapma, (içerik türü kapalı tabanlı XML kapma), XML dosyaları her içerik türü için formu tanımlamak ve yapacağını hepsi sadece sayfanızdaki formu sıva olabilir Daha sonra veritabanına arta kalan ne serileştirip, oluşturulan / güncellenen tarihleri ​​isim. (Eğer sıkı olmasını istemiyorsanız) Belirli bir içerik türü için şema hiçbir bilgisi gereklidir.

Kişisel olarak bir kenara Ben çok (Zend_Validate ve Zend_Config ile) Zend_Form kapma gibi bir ORM / veritabanı soyutlama katmanı olarak Doctrine kullanarak içine bakmak öneririz rağmen. Bunu veritabanı işlemleri çalışan gelince en azından Doktrini hayatınızı çok daha kolay hale getirecek bulabilirsiniz.

Ben son derece öneririm bir kenara kişisel olarak olsa (Zend_Validate ve Zend_Config ile) Zend_Form kapma gibi bir ORM / veritabanı soyutlama katmanı olarak Doktrini kullanarak içine bakmak. Bunu veritabanı işlemleri çalışan gelince en azından Doktrini hayatınızı çok daha kolay hale getirecek bulabilirsiniz.

Ben dcousineau katılıyorum. Zaten bitince Neden kendi rulo? Ben de Zend DB bakabilirsiniz, ve olurdu bir PHP4 ve 5 çözüm gerekiyorsa PHP ADOdb.

Geçenlerde akademik bir proje başlattı ve sizinle aynı arzusu vardı; sonunda ben PHP adodb ile gitti.

Crudder - http://syntacticsugar.nl/crudder/

"Eh, ben bir ticari proje için CRUD-kütüphane çeşit gerekli, ama ben bulabildiğim tüm OOP, şişirilmiş değil, bir AJAX-kontrollü bir arayüze sahip veya Spagetti tarzı yazılı vermedi, ve en kötüsü: bunların hiçbiri kod satırlarını ve satır yazmak zorunda kalmadan kullanılabilir. REZİL basit doğru olması gerekir?

Yani .. Ben (yeni ne var) benim hafta sonu vazgeçmeye karar verdi ve Crudder başladı. "

Ben www.ajaxcrud.com önermek - bu, kullanımı kolay, hafif, ve saniyeler içinde sizi ve koşma alır.

http://xcrud.com, gerçekten yararlı: Bu deneyebilirsiniz