Monday 15 July 2013

Cannot find dynamic class reference PHP -


मेरा routing.php (auto-prepend file)

  & lt;? Php if ( Preg_match ('/। (?: png | jpg | jpeg | gif) $ /', $ _SERVER ["REQUEST_URI"])) {वापसी झूठी; } और (शामिल करें 'index.php'; }  

मेरी index.php

  & lt;? Php नामस्थान एमवीसी; Need_once "नियंत्रक / व्यवस्थापक कंट्रोलर। Php"; AdminController के रूप में MVC \ नियंत्रकों \ AdminController का उपयोग करें; / * * अनुरोधित यूआरआई को एक सरणी में तोड़ दें * / $ request = trim ($ _ SERVER ["REQUEST_URI"]); $ अनुरोध = विस्फोट ("/", $ अनुरोध); $ Request = array_filter ($ अनुरोध); $ अतिरिक्त = सरणी (); $ सिंगल्स = सरणी (); / * * अनुरोधित URL से विधि / नियंत्रक प्राप्त करें * / foreach ($ $ के रूप में $ अनुरोध = & gt; $ आइटम) {स्विच ($ कुंजी) {मामला 1: $ नियंत्रक = $ आइटम; टूटना; मामला 2: $ विधि = $ आइटम; टूटना; डिफ़ॉल्ट: यदि ($ की & gt; 2) {$ item = विस्फोट ("=", $ आइटम); If (isset ($ item [1])) {// कुंजी आइटम जोड़ी, डेटा $ जोड़े [$ item [0]] = $ item [1]; / * * धारणा करें कि किसी भी मान को एक असाइन किए गए मान के रूप में दिया गया है डेटा है और कोई मार्ग नहीं * * जोड़े को अपनी खुद की कुंजी / आइटम * /} के रूप में जोड़ें यदि (isset ($ item [0]) ) {Echo "& lt; b & gt; चेतावनी: \" "। $ Item [0]।" \ "की कोई चाबी / मान नहीं है! & Lt; / b & gt;"; }             }             टूटना; }} / * * इस तथ्य को संभाल लें कि ये शायद अनुरोध नहीं किया गया हो * / if (! Isset ($ नियंत्रक)) $ नियंत्रक = 'अनुक्रमणिका'; $ नियंत्रक = ucfirst ($ नियंत्रक) "नियंत्रक"; अगर (! Isset ($ विधि)) $ method = 'index'; $ नियंत्रक = नया $ नियंत्रक ();  

मेरा AdminController.php (नियंत्रकों / व्यवस्थापककंट्रोलर.एफ़पी में पाया गया है)

  & lt; php नामस्थान एमवीसी नियंत्रक; Need_once "libs / controller.php"; MVC \ libs \ नियंत्रक का उपयोग करें; क्लास व्यवस्थापक नियंत्रक {} ​​ 

अंत में मेरे नियंत्रक superclass / libs / controller.php

  & lt; php नामस्थान MVC \ libs में मिला; वर्ग नियंत्रक {} ​​ 

मेरी समस्या यह रेखा है

  $ नियंत्रक = नया $ नियंत्रक ();  

मुझे पता है कि यह एक चर है - यह इरादा है, मैं यूआरआई अनुरोध के आधार पर गतिशील रूप से इस वर्ग को लोड करने की कोशिश कर रहा हूं।

यह त्रुटि देता है:

  127.0.0.1:50342 [500]: / admin / users / id = 555 / action = ban - क्लास 'AdminController' में नहीं मिला /home/jack/PhpstormProjects/mvc/index.php पंक्ति 64 पर  

मैंने यह जाँच कर लिया है कि क्लास की आवश्यकता है, इसे "AdminController" के रूप में उपयोग करते हुए, फिर भी यह अभी भी नहीं मिल सकता है संबंधित नामस्थान में इसका एक संदर्भ - मैं सोच रहा हूँ क्योंकि यह गतिशील है, इसमें कुछ समस्याएं हो सकती हैं?

सभी चीयर्स!

संपादित करें: मेरा फ़ोल्डर संरचना

  नियंत्रक AdminController.php लिब्स नियंत्रक.फ़ीपी index.php routing.php  

यह एक नेमस्पेस समस्या है आप वैसी ही चर वर्ग नाम और उपयोग कथन का उपयोग उसी समय नहीं कर सकते हैं जैसे आप करते हैं। आपके चर को रनटाइम पर उसका मूल्य मिलता है, जबकि उपयोग आयात संकलन समय पर किया जाता है ( उपयोग का उपयोग उसी तरह ब्लॉक क्षेत्र में नहीं किया जा सकता है)। देखें:

<पूर्व> बार के रूप में उपयोग करें foo; क्लास एफू {सार्वजनिक फ़ंक्शन __ कंस्ट्रक्ट () {गूंज "ओके \ n"; }} New foo (); // ठीक नए बार (); // ठीक है $ foo = 'foo'; $ Bar = 'बार'; नया $ foo (); // ठीक नया $ बार (); // गंभीर त्रुटि: कक्षा 'बार' नहीं मिला

समाधान: अपने चर में पूर्ण वर्ग का नाम (पूर्ण नेमस्पेस के साथ) का उपयोग करें।


No comments:

Post a Comment