Sınıfları ve kütüphaneler - kişisel CMS Bina

2 Cevap php

I'm building my personal CMS and need your advice organizing core functions and classes. I have folders:

/shared
   /classes
       DB.php
       Session.php
       Config.php
       ...
   /libraries
       Arrays.php
       DateTime.php
       Email.php
       ...

Dosyalar 'sınıfların' klasörü çekirdek sınıfları (dosya başına bir sınıf) içerir.

Now the question is about /libraries/ - they contain functions that may be used in any class, and sometimes they use some other function from another library, and sometimes they need to access some core class. Should i just write them as functions, or make them static and wrap in some class? Basically i need them everywhere, but keep them organized.

2 Cevap

Benim önerim ilk CMS mimari hedefleri hakkında yoluyla düşünmektir. Tabii,% 100 sizin olacak, ama bu alışkanlık yapar tabii, ne nedir çengel nerede ve nasıl başlar ve nasıl ben alabilirim değil muzdarip anlamına gelmez buradan.

Ben kesinlikle kütüphaneleri çağrı kütüphaneleri tavsiye etmem bu yüzden. Benim bakış itibaren, sınıfların hiçbiri bazı diğer tek amaçlandığı müstakil sınıflarda çalışmalarını dağıtılan istiyorum beri uygulama akışındaki ilk birkaç çekirdek sınıfları hariç başka bir şey bağlı olmalıdır. Eğer çekirdek sınıfları ile tekillik ve bölünmezlik hedeflemelidir.

Ben mimari desen (Ben MVC, HMVC veya PAC olacak tahmin edeceğiz) ne olacağını bilmiyorum, ama ben bunu ilk başlatırken üzerinde temellerini atacak bir kaç çekirdek sınıfları [/ core] tanımlamak iyi olduğunu düşünüyorum Gelen istekleri isteği ayrıştırma ve istenen denetleyici [/ kontrolörleri] başlatılıyor önce bazı varsayılan görevleri yapmak için gerekli olan bazı kütüphaneleri [/ kütüphaneler] örneklilik tarafından uygulama.

Kütüphaneler tek bir amacı olmalıdır. Oturum işleme kütüphanesi sadece Başlangıçta baz denetleyicisi ve baz modeli oluşturmak ve [/ çekirdek] koyun ve kontrolörleri [/ kontrolörleri] ve modelleri [/ modeller] var senin tabanını genişletmek vb oturumları, yönlendirme kütüphane yönlendirme, işlemesi gereken [/ çekirdek] kontrolcüsü ve model.

Her zaman olduğu gibi, daha az birleştiğinde bileşenleri daha iyidir. İyi bir çözüm amacına içinde, hafif, küçük ve kapsamlı olacak. Bu size sadece çekirdek sınıfları değiştirmek ve diğer yerlerde herhangi bir değişiklik yapmak zorunda kalmadan tüm uygulama üzerinde büyük bir etkisi olabilir gelecekte herhangi bir tasarım fikirlerini değiştirmek eğer yardımcı olur.

Should i just write them as functions, or make them static and wrap in some class? Basically i need them everywhere, but keep them organized.

Henüz ad alanları içine baktı mı? Bir ad içine tüm fonksiyonları sarma muhtemelen en iyi bahis olacaktır.