मैं किसी मॉड्यूल में कस्टम क्लास फ़ाइल कैसे शामिल कर सकता हूँ?


10

Drupal 7 मॉड्यूल डेवलपमेंट में, मैं एक कस्टम इंक, एपीआई या php क्लास फाइल को फाइल का उपयोग करके शामिल कर सकता हूं [] = mod.info फ़ाइल में निर्देश या ड्रुपल_लोड_सिनल () फ़ंक्शन।

पीएसआर का उपयोग करते हुए डी 8 के साथ, "सादे ओले पीएचपी ऑब्जेक्ट" को पैकेज करने और इसे संदर्भित करने का उचित तरीका क्या है DefaultController.php? की तरह कुछ सोचें: $a = new POPO();

क्या बस PHP फाइल को क्लास में namespaceपर्याप्त जगह दे रहा है? नियंत्रक (या सामान्य रूप से मॉड्यूल) को उस वर्ग के लिए संदर्भ या स्कैन करने के लिए कैसे पता चलता है?


यह लिंक Drupal 8.x मॉड्यूल बनाना उपयोगी हो सकता है
कृष्ण मोहन

हां, मैंने drupal.org/node/2087879 के माध्यम से पढ़ा है, लेकिन फ़ाइल [] = निर्देश नहीं देखने पर, यह दुर्भाग्य से फ़ाइल समावेशन के इस विशिष्ट प्रश्न का उत्तर नहीं देता है।
रिक

जवाबों:


11

तुम file[] = ...अब और उपयोग नहीं करते। इसके बजाय, कक्षाएं ऑटोलॉइड हैं। उदाहरण के लिए, मेरे पास निम्न फ़ाइल संरचना के साथ एक मॉड्यूल है:

  • views_hybrid /
    • views_hybrid.info.yml
    • views_hybrid.module
    • src /
      • लगाना/
        • खेत/
          • FieldFormatter /
            • HybridFormatter.php

HybridFormatter.php हाइब्रिडफॉर्मर नामक एक वर्ग को परिभाषित करता है।

मेरी .module फ़ाइल में, यदि मैं अपनी IDE (NetBeans इस मामले में) लिखना शुरू कर देता हूँ तो HybridFormatterयह स्वतः पूर्ण हो जाता है \Drupal\views_hybrid\Plugin\Field\FieldFormatter\HybridFormatter::क्योंकि यह स्वतः- पंजीकृत है। चूँकि मैं नहीं चाहता कि पूरा रास्ता मेरे मॉड्यूल पर है, इसलिए मैंने सबसे ऊपर लाइन लगाई है,

use Drupal\views_hybrid\Plugin\Field\FieldFormatter\HybridFormatter;

useअन्य वर्गों के लिए निर्देशों के साथ मैं अपने मॉड्यूल के साथ उपयोग के लिए शामिल हूं।

नाम स्थान हाइब्रिडफार्मेट.फैप में परिभाषित किया गया है:

namespace Drupal\views_hybrid\Plugin\Field\FieldFormatter;

class HybridFormatter extends FormatterBase { ... }

तो यह सुनिश्चित करने के लिए कि मैं पूरी तरह से समझ सकता हूं, HybridFormatter.php स्वतः पूर्ण हो जाएगा ... स्वचालित रूप से? एक शामिल_ () के लिए कोई ज़रूरत नहीं है? क्या HybridFormatter.php में एक नेमस्पेस परिभाषित है?
रिक

के लिए कोई जरूरत नहीं है include_onceया require_onceहै या कुछ भी। Hybridformatter.php एक नाम स्थान को परिभाषित करता है। मैं उत्तर में शामिल करूंगा।
बेथ

@ बीथ क्या आप मेरी मदद कर सकते हैं? drupal.stackexchange.com/questions/233565/…
रॉबिनसन

9

मैं उस कस्टम वर्ग को शामिल करना चाहता / चाहती हूं जो D8 "प्लगइन, नियंत्रक, प्रपत्र, आदि में फिट नहीं होता है" चूक, आप अभी भी यहाँ के रूप में प्रख्यात PSR-4 अवलोकन कर सकते हैं

मेरे उपयोग के मामले के लिए, मैंने एक "CustomClass.php" को / मॉड्यूल / कस्टम / my_module / src / में छोड़ दिया। फ़ाइल की शुरुआत में मैंने नाम स्थान घोषणा शामिल की

namespace Drupal\my_module;

और फ़ाइल में मैं इसे (इस विशेष मामले में my_theme.theme में) इस्तेमाल करना चाहता था

use Drupal\my_module\CustomClass;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.