Ben böyle bir sınıf var ki çocukları almak için bir yolu var mıPHP
<?
class SomeNewClass extends ObjectModel {
}
class SomeOtherNewClass extends ObjectModel {
}
(SomeNewClass & SomeOtherNewClass) ObjectModel sınıfına göre mi?
Ben böyle bir sınıf var ki çocukları almak için bir yolu var mıPHP
<?
class SomeNewClass extends ObjectModel {
}
class SomeOtherNewClass extends ObjectModel {
}
(SomeNewClass & SomeOtherNewClass) ObjectModel sınıfına göre mi?
class ObjectModel {
}
class SomeNewClass extends ObjectModel {
}
class SomeOtherNewClass extends ObjectModel {
}
class SomeOtherNewClassLol extends ObjectModel {
}
function get_extends_number($base){
$rt=0;
foreach(get_declared_classes() as $class)
if(is_subclass_of($class,$base)) $rt++;
return $rt;
}
echo get_extends_number('ObjectModel'); //output: 3
Evet, bunu yapabilirsiniz, DEMO
ile bu listede yineleyin 'SomeOtherNewClassLol'' SomeOtherNewClass' genişletirse aynı sonucu elde edersiniz. –
@AlixAxel SomeOtherNewClassLol, SomeOtherNewClass'ı genişletirse, ObjectModel'i de genişletirsiniz, daha sonra özel olmayan yöntemleri/provaları kullanılabilir – Sam
@AlixAxel Bu durumda, "SomeOtherNewClassLol" hala ObjectModel öğesinin devralınmasıdır. Hala bir torun olsa bile hala bir soyundan olduğu gibi, ObjectModel'de oluşturulan yöntemlere/özelliklere erişebilir. –
Sen get_declared_classes()
tarafından döndürülen tüm sınıfları yineleme ve kendi Reflection (Reflection::isSubclassOf
)
teftiş Ama olabilir - Özdevinimli kullanırken bu işe yaramaz. Bu downvoted almak için gidiyor ama yolumuzu kesmek eğer
emin değil: 1
üzerindeki her sınıf için
get_declared_classes
get_parent_class
Pek hoş değil, ama eğer Çocuk sınıfları yüklenir, bu mümkündür.
Hayır, doğrudan bunu yapamaz. Niçin buna ihtiyacın var? Bunu yapmanın makul bir yolu, bunu ayrı bir yapılandırma dosyasında izlemektir, ancak bu çok sıkıcı. Mirasın noktası, ayrıntıları gizlemek ve miras zincirinin bu hedefle doğrudan çatışmasını talep etmektir. Bilmemelisin. – Halcyon
Yeni çocukları 'parent :: __ construct()' aracılığıyla kaydedebilirsiniz, ancak bu durum hantal olabilir. Niyeti açıklayabilir misin? –
Bir PHP-CMS yapıyorum. Ve içindeki her model ObjectModel'den miras alır. Şimdi, eğer bir kontrolör dinamik bir yolda olabilecek belirli bir modeli aramalıysa, o sınıfı aramak ve kullanmak güzel olurdu. Örneğin: SomeNewClass modeli /_components/sample/_models/somenewclass.php altında olabilir veya /_brain/_components/navigation/_models/somenewclass.php –