Şu anda bir yönetici uygulamayı yeniden ve en iyi uygulama için öneriler için arıyorum! Ben doğru terminoloji yoksa Affedersiniz, ama nasıl aşağıdaki hakkında gitmeli?
"Kullanıcılar" örnek alın - genellikle biz 'isim' gibi özelliklere sahip bir sınıf oluşturmak, 'username', 'password', vb getUser($user_ID)
, {[(1)] gibi bazı yöntemler yapmak }, vb sonunda, biz çiftleri gibi isim-değer bir dizi / diziler ile sonuna kadar; array('name' => 'Joe Bloggs', 'username' => 'joe_90', 'password' => '123456', etc)
.
Sorun, bu nesnenin özellikleri her biri hakkında daha fazla bilmek istiyorum olmasıdır.
"Username" düşünün - değerini bilerek ek olarak, ben gibi şeyler bilmek nesne istiyorum; hangi metin etiket doğrularken kullanmalıyım regex, hangi formdaki denetimin yanında göstermesi gerekir, ne hata mesajı uygun? Bunlar modele ait gibi görünüyor.
Daha ben sorunu üzerinde çalışmak, daha çok başka şeyler de görüyorum; Bu özelliği görüntülemek için kullanılması gereken HTML öğesi, 'REGISTRATION_DATE' gibi özellikleri için minimum / maksimum değerler nelerdir?
I (basitleştirilmiş) bu gibi sınıf görünümlü bir şey öngörülmektedir:
class User {
...etc...
private static $model = array();
...etc...
function __construct(){
...etc...
$this->model['username']['value'] = NULL; // A default value used for new objects.
$this->model['username']['label'] = dictionary::lookup('username'); // Displayed on the HTML form. Actual string comes from a translation database.
$this->model['username']['regex'] = '/^[0-9a-z_]{4,64}$/i'; // Used for both client-side validation and backend validation/sanitising;
$this->model['username']['HTML'] = 'text'; // Which type of HTML control should be used to interact with this property.
...etc...
$this->model['registration_date']['value'] = 'now'; // Default value
$this->model['registration_date']['label'] = dictionary::lookup('registration_date');
$this->model['registration_date']['minimum'] = '2007-06-05'; // These values could be set by a permissions/override object.
$this->model['registration_date']['maximum'] = '+1 week';
$this->model['registration_date']['HTML'] = 'datepicker';
...etc...
}
...etc...
function getUser($user_ID){
...etc...
// getUser pulls the real data from the database and overwrites the default value for that property.
return $this->model;
}
}
Temelde, ben fikir ben bir HTML formu yardımcısı içine bir kullanıcı dizi beslemek ve bunu otomatik olarak oluşturabilirsiniz sahip olmasıdır vb HTML biçimlendirmesi, doğrulama rutinleri için kod çoğaltmak zorunda değilsiniz, böylece bu bilgileri tek bir yerde olmak istiyorum form denetimleri ve JavaScript doğrulama.
Daha sonra, vb setRegistrationDate($registration_date)
, setUsername($username)
gibi bireysel yöntemler olan önlemek için genel bir set($data = array(), $model = array())
yöntemi ile backend aynı nesneyi kullanabilirsiniz ..
- Bu mantıklı bir yaklaşım gibi görünüyor mu?
- Eğer değer, etiket, regex, vb ne denir ki? Özelliklerinin özellikleri? Özellikler?
- O bir prototip olarak modeli tutmak için daha güzel ve
getUser()
özelliklerini devralır olurdu oysa,$this->model
getUser()
nesne modeli yazılır demektir Kullanımı. - Ben bunu bazı endüstri standardı bir şekilde eksik? (I all çerçeveler yoluyla olmuştur - örnek modeller her zaman eksik!)
- Örneğin, ben başka bir model değerleri ile bir SELECT ile kullanıcı türlerini görüntülemek istediğinizde, nasıl ölçek nedir?
Teşekkürler!
Update
http://en.wikipedia.org/wiki/Java_annotations - - daha fazla veya daha az ne soruyordu gibi görünüyor ben beri Java sınıfı açıklamaları olduğunu öğrendim. http://interfacelab.com/metadataattributes-in-php - - Herkes böyle bir programlama içine herhangi bir fikir var mı ben bu yazı bulundu?