संभव डुप्लिकेट:
Count elements for objects implementing ArrayAccess using count()?गिनती के व्यवहार (अधिभार) जब कुछ वस्तुओं
PHP 5 में, आप, जादू तरीकों का उपयोग कर सकते हैं कुछ कक्षाएं, आदि ओवरलोड में सी ++, आप उन कार्यों को कार्यान्वित कर सकते हैं जो तब तक मौजूद हैं जब तक तर्क प्रकार भिन्न होते हैं। PHP में ऐसा करने का कोई तरीका है?
मैं क्या करना चाहते हैं क्या का एक उदाहरण यह है:
class a {
function a() {
$this->list = array("1", "2");
}
}
$blah = new a();
count($blah);
मैं blah वापस जाने के लिए 2. आईई कक्षा में एक विशिष्ट सरणी के मूल्यों गिनती करना चाहते हैं। मूल रूप से
int count(a varName) { return count(varName->list); }
, मैं इतना मैं यह कर कॉल कर सकते हैं एक बड़ी आवेदन के लिए डेटा कॉल्स को आसान बनाने की कोशिश कर रहा हूँ:: तो सी ++ में, जिस तरह से मैं यह करना होगा ऐसा दिखाई दे सकता
count($object);
बल्कि अगर किसी को यह वर्तमान तरीके से करना है की तुलना में
count($object->list);
सूची संभावित वस्तुओं तो उसके उपयोग के तरीके पर निर्भर करता है की एक सूची होने जा रहा है, यह वास्तव में बुरा बयान हो सकता है:
count($object->list[0]->list[0]->list);
तो, मैं यह करने के लिए कुछ इसी तरह बना सकते हैं:
function count(a $object) {
count($object->list);
}
मैं जानता हूँ कि PHP के गिनती एक मिश्रित वर को स्वीकार करता है, तो मैं अगर मैं एक व्यक्ति के प्रकार ओवरराइड कर सकते हैं पता नहीं है।
ध्यान दें: आप एसटीएल कार्यों को ओवरलोड नहीं कर सकते हैं ... –
यह आप [गिनती डॉक्स पेज] पर जवाब बताता है (http://php.net/manual/en/function.count.php) । "ऑब्जेक्ट्स के लिए, यदि आपके पास एसपीएल स्थापित है, तो आप इंटरफ़ेस को कार्यान्वित करके गिनती() में हुक कर सकते हैं। इंटरफ़ेस में बिल्कुल एक विधि है, काउंटरबल :: गिनती(), जो गिनती() फ़ंक्शन के लिए रिटर्न मान देता है।" – Greg