Yani zamanında sınıf yöntemleri çıkarmak / eklemek mümkün olmak istiyorum. O OOP'deki korkunç pratice söyle önce, bu olabilir, ama gerçekten umurumda değil. Ben uygulama çok modüler olmak istiyorum, çünkü bunu yapmak mümkün olmak istiyorum nedeni, bu nedenle bazı eklenti ana app öldürmeden bazı temel sınıf genişletmek ve buna yöntemler ekleyebilirsiniz.
Örneğin, ben şu sınıfı söylüyorlar:
class User {
protected $Id;
protected $Name;
protected $Password;
protected $PostsPerPage;
}
Ve bazı eklenti sınıfa $ Visible özelliğini ekleyerek, kullanıcılar kendi görünürlük ayarlarını değiştirmek için imkanı ekler, söylüyorlar. Sınıf olacak:
class User {
protected $Id;
protected $Name;
protected $Password;
protected $PostsPerPage;
protected $Visible;
}
Bu __ get ve __ set ile elde edilebilir, ancak en yaygın uygulama alma ve zamanı oluşturulan özelliklerini ayarlamak için, ve bir eklenen her özellik için sözde alıcı ve ayarlayıcıları kod güçlük yanı sıra, __ set kullanarak olurdu bir hayır- hayır bence.
Ben diğer fikri $ UserVisiblitySettings [userid] gibi başka bir dizide, ayrı ayrı kullanıcı ayarlarını saklamak için, ama bunları olmak istiyorum kadar ki OO gibi şeyler değil yapar.
Sonraki fikir bir yardımcı sınıf, böyle bir şey yapmak oldu:
class UserHelper {
public function SetVisiblity($user_object,value);
}
Sonra, ben kullanabilir __ get ve __ "arkadaş" yöntemleri / sınıfları uygulamak için ayarlanır, ancak bu çok hackish geliyor. Ben bu şekilde gitmek için sanki de sadece aşırı __ get ve __ set __, diyebilirsiniz. Ayrıca ben bu iyi cepten pratice bu yüzden emin değilim, ve çok çirkin bakmak istiyorum.
Ben son fikir (bu ben de ile gelebilir eval tek geçerli kullanımı)) eval (kullanarak runtime dinamik sınıflar oluşturmak için bazı işleve sahip oldu. Temelde, sınıf 'açılış ve kapanış parantez bulmak ve eval göndermek için bazı basit dirsek bulgu yapmak, bir dosyadan sınıf tanımını olsun.
Bu modası geçmiş ve ben oldukça bazı uzantısı yüklemek için kullanıcı zorlamak istemem gibi runkit kullanarak, söz konusu değildir.
Ben fikirlere baktığınızda, yoğun basit bir ve daha az cpu _call aşırı ve yöntemler sınıfında kayıtlı olması için bir yol eklemek gibi görünüyor.
Olmayan herhangi bir düşünce takdir edilmektedir "bunu yapmayın" Lütfen.