Zend फ्रेमवर्क कार्यशाला। भाग दो: रूट और रजिस्ट्री


हम Zend फ्रेमवर्क के व्यावहारिक उपयोग की समीक्षा करना जारी रखते हैं। दूसरा भाग रूटिंग पर ध्यान केंद्रित करेगा, जो आपको किसी भी रूप के यूआरएल बनाने की अनुमति देता है। हम सिस्टम स्थिरांक तक सुविधाजनक पहुंच के आयोजन के एक उदाहरण पर भी विचार करेंगे

मार्ग


रूटिंग एक बहुत ही महत्वपूर्ण विषय है। जैसा कि आप जानते हैं, डिफ़ॉल्ट रूप से, Zend फ्रेमवर्क प्रारूप url - नियंत्रक / क्रिया / param1 / value1 / param2 / value2 का उपयोग करता है। रूटिंग टूल के लिए धन्यवाद, हम प्रोजेक्ट में आवश्यक प्रारूप के यूआरएल को व्यवस्थित कर सकते हैं। उदाहरण के लिए, आप फ़ॉर्म के url के माध्यम से स्थैतिक पृष्ठों तक सरल पहुंच को व्यवस्थित कर सकते हैं - site.com/static-page या फ़ॉर्म के लिंक के माध्यम से उत्पादों तक पहुंच को लागू कर सकते हैं - site.com/catalog/category/good-name। यह विशेष रूप से एसईओ की जरूरतों के लिए उपयोगी है, लेकिन यह उपयोगकर्ताओं को लिंक प्राप्त करने में भी मदद करता है, तुरंत समझ जाता है कि साइट के पृष्ठ पर क्या है।
ऊपर दिए गए लिंक प्रारूपों के लिए मार्ग बनाने के उदाहरण पर विचार करें। सबसे पहले आपको मार्ग बनाने की आवश्यकता है, इसके लिए हम bootstrap.php फ़ाइल में एक विधि लिखते हैं:

public function _initRoute(){ //  , - $router = Zend_Controller_Front::getInstance()->getRouter(); //    //     $route_static = new Zend_Controller_Router_Route( '/:page', array( 'controller' => 'static', 'action' => 'index', 'page' => 'default-page-name' ), array( 'page' => '[\w\-]+' ) ); $router->addRoute('static', $route_static); //    $route_goods = new Zend_Controller_Router_Route( '/catalog/:category/:good/*', array( 'controller' => 'goods', 'action' => 'show' ), array( 'category' => '[\w\-]+', 'good' => '[\w\-]+' ) ); $router->addRoute('goods', $route_goods); } 

पहले हमें एक मानक राउटर मिलता है और उसमें कस्टम रूट जोड़े जाते हैं। इस स्थिति में, हम पुनः लेखन राउटर Zend_Controller_Router_Route का उपयोग करते हैं। पहला पैरामीटर स्ट्रिंग निर्माता है जो यूआरएल प्रारूप का वर्णन करता है। फॉर्म के पहचानकर्ता ": चर" का उपयोग गतिशील भागों को परिभाषित करने के लिए किया जाता है। ऐसे गतिशील भागों पर विचार करना सुविधाजनक है, जिनके चर को url के एक निश्चित खंड से प्रतिस्थापित किया जाता है। दूसरा पैरामीटर मानक राउटर मानों की एक सरणी से गुजरता है। इस सरणी में, आपको नियंत्रक के नाम और कार्रवाई को निर्दिष्ट करने की आवश्यकता है जो इस मार्ग के साथ अनुरोध को संसाधित करेगा, साथ ही साथ डिफ़ॉल्ट चर के मान भी उपयोग किए जाएंगे जो संबंधित url मान को छोड़ दिया गया है। परिवर्तनीय आवश्यकताओं को सेट करना भी सुविधाजनक है। ऐसा करने के लिए, तीसरा पैरामीटर एक पैटर्न को पारित करना है जो एक वैध चर मूल्य के प्रारूप का वर्णन करता है। जब भी संभव हो मैं इस विकल्प को निर्दिष्ट करने की सलाह देता हूं। यह सुरक्षा कारणों से उपयोगी है। यदि टेम्प्लेट चर के मान से मेल नहीं खाता है, तो त्रुटि उत्पन्न हो जाएगी और क्रिया कोड को संभावित खतरनाक मान प्राप्त नहीं होगा।
राउटर बनाने के बाद, हमें addRoute पद्धति का उपयोग करके इसे मानक राउटर में जोड़ना होगा। प्रत्येक मार्ग में एक विशिष्ट पहचानकर्ता स्ट्रिंग होना चाहिए, जिसका उपयोग भविष्य में हमारे द्वारा किया जाएगा।
चर के मूल्य को प्राप्त करने के लिए आगे की कार्रवाई कोड में, हमें निम्नलिखित कोड को निष्पादित करने की आवश्यकता है:

 $page = $this->getRequest()->getParam('page'); 

हमें इस राउटर का उपयोग करके लिंक बनाने की भी आवश्यकता हो सकती है। ऐसा करने के लिए, मानक यूआरएल सहायक का उपयोग करें।

 <a href="<?php $this->url(array('page'=>'about'), 'static'); ?>"> </a> 

हमने Zend फ्रेमवर्क में उपयोग किए गए राउटर में से केवल एक की जांच की। आप यहाँ प्रलेखन में अधिक पढ़ सकते हैं।

रजिस्ट्री


अब हम देखेंगे कि कैसे ZF में आप application.ini फ़ाइल के अनुभाग से स्थिरांक तक सुविधाजनक और त्वरित पहुँच व्यवस्थित कर सकते हैं। सबसे पहले, कुछ स्थिरांक निर्धारित करते हैं:

[स्थिरांक]
paths.photo = "/ फोटो /"
paths.uploads = "/ अपलोड /"
paths.video = "/ वीडियो /"
secret_code = "key_for_check"

ऊपर दिए गए कोड को application.ini फ़ाइल में रखा जाना चाहिए। इसके बाद, हम Zend_Registry घटक का उपयोग करते हैं, जो रजिस्ट्री पैटर्न को लागू करता है, ताकि परियोजना के दौरान हमारे स्थिरांक उपलब्ध हो सकें:

  public function _initConfig(){ Zend_Registry::set('constants', new Zend_Config_Ini( APPLICATION_PATH . '/configs/application.ini', 'constants') ); } 

ऊपर प्रस्तुत विधि को bootstrap.php में जोड़ा जाना चाहिए। अगला, निरंतर का उपयोग करने के लिए, निम्नलिखित कोड का उपयोग करें:

 $path_photo = Zend_Registry::get('constants')->paths->photo; 

Source: https://habr.com/ru/post/In121222/


All Articles