2012-06-27 15 views
7

क्या मुझे PHP में विस्तारित मूल वर्ग को शामिल/आवश्यक करना चाहिए?PHP में अभिभावक वर्ग को विस्तारित करने के लिए फ़ाइल को कक्षा के साथ फ़ाइल की आवश्यकता होती है?

उदाहरण के लिए

मैं एक वर्ग आकार कहा जाता है

class Shapes { 

} 

और फिर मैं एक उपवर्ग बुलाया

require_once('shapes.php'); 

class Circle extends Shapes { 

} 

मैं माता पिता के वर्ग जब मैं विस्तार कर रहा हूँ की आवश्यकता है बनाया? या सिर्फ उप-वर्ग को अपने मूल वर्ग में विस्तारित करना चाहिए, भले ही वे एक ही फ़ोल्डर में हों?

+4

क्या आपने ऑटो लोडिंग को देखा है? http://www.php.net/manual/en/language.oop5.autoload.php –

उत्तर

13

आपको कुछ करने की आवश्यकता है ताकि PHP कक्षा को संसाधित करने से पहले PHP को आपकी बेस क्लास परिभाषा को देखने दें ताकि अन्यथा घातक त्रुटि हो।

यह कुछ या तो आधार वर्ग फ़ाइल की एक पुस्तिका require_once, या autoloading हो सकता है (वहाँ autoloading के लिए अन्य विकल्प हैं, लेकिन spl_autoload_register एक का उपयोग करना चाहिए है)।

उपयोग करने के लिए कौन सा दृष्टिकोण दायरे पर निर्भर करता है: जब ऑटोलोडिंग की स्थापना करने वाली छोटी परीक्षण परियोजना को कोड करना संभवतः अधिक होता है।

  • यह जटिल स्रोत फ़ाइल संकल्प तर्क (छिपा कर सकते हैं जैसे अगर आप आधार वर्ग के लिए एक विन्यास निर्देशिका है, और अधिक उन्नत परिदृश्यों के रूप में अच्छी तरह से देखते हैं: लेकिन के रूप में कोड बेस में अधिकाधिक महत्वपूर्ण हो जाता है, autoloading क्योंकि अधिक आकर्षक हो जाता है)
  • यह संवर्द्धित विन्यस्त किया जा सकता: आपको लगता है कि एक श्रृंखला के रूप में चलाने के लिए कई autoloaders, और आवेदन के प्रत्येक स्वतंत्र मॉड्यूल का उपयोग कर सकते हैं अपनी स्वतंत्र autoloader कि सभी दूसरों
2

हाँ, आप के साथ शांति coexists रजिस्टर कर सकते हैं इसे शामिल करने के लिए यदि उस वर्ग को उसी फ़ाइल में घोषित नहीं किया गया है।

इसके अलावा वहाँ एक विशेषता Autoloading Classes कहा जाता है जिसके साथ आप इस तरह एक समारोह बना सकते हैं था:

function __autoload($class){ 
    require_once('classes/' . $class . '.php'); 
} 

और यह स्वचालित रूप से जो मौजूदा दायरे में

आप भी नहीं पाए जाते हैं कक्षाओं में शामिल होंगे इस सुविधा के बारे में भी पढ़ सकते हैं: autoload_register

1

आप प्रक्रिया को सरल बनाने के लिए संगीतकार का भी उपयोग कर सकते हैं।

https://getcomposer.org/ से इस

{ 
... 
    "autoload": { 
     "psr-4": { 
      "": "src/" 
     } 
    }, 
... 
} 

प्राप्त संगीतकार की तरह composer.json करें और composer install चलाते हैं। आप 5.3.0 से भी कम समय पीएचपी तो dirname(__FILE__) साथ __DIR__ की जगह है, तो जैसे

require_once __DIR__ . '/vendor/autoload.php'; 

एक बार संगीतकार के autoload स्क्रिप्ट लोड करना चाहिए।

और अपनी फ़ाइलों को src फ़ोल्डर में डालें।उदाहरण के लिए यदि आपके पास कक्षा Acme\Utils\FooBar है तो यह src/Acme/Utils/FooBar.php में होना चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे