दिलचस्प पोस्ट
स्मार्ट पॉइंटर्स और एरेज़ वास्तव में "यू" क्या करता है? "Git push -u मूल मास्टर" बनाम "git push origin master" TransactionScope लेनदेन वापस रोल कैसे करता है? EC2 टी 2। मीडिया फोर्स्टेबल क्रेडिट "बचत" कैलक्यूएशन सूची के साथ ViewModel <BaseClass> और संपादक टेम्पलेट्स जुड़वां के साथ माध्यमिक अक्ष (): किंवदंती में जोड़ने के लिए कैसे? मानचित्र के नतीजे को नष्ट करने का सही तरीका क्या है? एक्स लगातार दिनों के लिए जांचें – डेटाबेस में दिए गए टाइमस्टैंप पायथन एसक्लाइट 3 एपीआई के प्रयोग से तालिकाओं की सूची, डीबी स्कीमा, डंप आदि सी / सी ++ प्रोग्रामिंग भाषा का आरंभीकरण आरम्भ करें? उपयोग स्कीमा के उपयोग से एक सूची स्वत: तारों को NoSuchBeanDefinitionException प्रदान करता है वसंत डेटा संग्रह के कस्टम तरीकों को लागू करना और उन्हें REST के माध्यम से उजागर करना जावास्क्रिप्ट XMLHttpRequest JsonP का उपयोग करते हुए आप मोबाइल सफारी पर व्यूपोर्ट ज़ूमिंग कैसे अक्षम करते हैं? निर्धारित बिंदु गणित करने का सबसे अच्छा तरीका क्या है?

किसी गैर-ऑब्जेक्ट पर एक सदस्य फ़ंक्शन पर कॉल करें

इसलिए मैं और अधिक OOP को लागू करने के लिए अपने कोड को पुन: परिष्कृत कर रहा हूं। मैंने पृष्ठ विशेषताओं को पकड़ने के लिए एक वर्ग की स्थापना की

class PageAtrributes { private $db_connection; private $page_title; public function __construct($db_connection) { $this->db_connection = $db_connection; $this->page_title = ''; } public function get_page_title() { return $this->page_title; } public function set_page_title($page_title) { $this->page_title = $page_title; } } 

बाद में मैं set_page_title () फ़ंक्शन की तरह कॉल करता हूं

 function page_properties($objPortal) { $objPage->set_page_title($myrow['title']); } 

जब मुझे त्रुटि संदेश प्राप्त होता है:

गैर ऑब्जेक्ट पर एक सदस्य फ़ंक्शन सेट_पृष्ठ_शीर्ष () पर कॉल करें

तो मुझे क्या याद आ रही है?

वेब के समाधान से एकत्रित समाधान "किसी गैर-ऑब्जेक्ट पर एक सदस्य फ़ंक्शन पर कॉल करें"

इसका मतलब है कि $objPage एक वस्तु का एक उदाहरण नहीं है। क्या हम उस कोड को देख सकते हैं जिसका उपयोग आप चर को प्रारंभ करने के लिए किया था?

जैसा कि आप एक विशिष्ट ऑब्जेक्ट प्रकार की अपेक्षा करते हैं, तब भी जब आप अपने तर्क का उल्लंघन करते हैं तो त्रुटि प्राप्त करने के लिए आप PHP के प्रकार-संकेत सुविधा का उपयोग भी कर सकते हैं:

 function page_properties(PageAtrributes $objPortal) { ... $objPage->set_page_title($myrow['title']); } 

यह फ़ंक्शन केवल पहले पैरामीटर के लिए PageAtrributes स्वीकार करेगा।

इस त्रुटि का उत्पादन करने का एक आसान तरीका है:

  $joe = null; $joe->anything(); 

त्रुटि प्रदान करेगा:

घातक त्रुटि: किसी सदस्य को किसी anything() समारोह में कॉल करें anything() गैर-ऑब्जेक्ट पर / अनुप्रयोग / एक्सएम्पीपी / एक्सपैपफ़ाइल / एचटीओसीएस / कैस मेल / डीएओ / एसरवर.एफ़पीपी लाइन 23

यह बहुत बेहतर होगा अगर PHP केवल कहें,

घातक त्रुटि: जो से कॉल परिभाषित नहीं किया गया है क्योंकि (a) joe नल है या (b) जो anything() परिभाषित नहीं करता anything() लाइन पर <##>।

आम तौर पर आपने अपना वर्ग बना लिया है ताकि $joe को कन्स्ट्रक्टर में परिभाषित नहीं किया गया हो या

या तो $objPage एक आवृत्ति चर नहीं है या आप $objPage को उस चीज़ के साथ ओवरराइट कर रहे हैं जो कि क्लास PageAttributes का उदाहरण नहीं है।

इसका यह भी मतलब हो सकता है कि जब आपने अपना ऑब्जेक्ट आरम्भ किया था, तो आपने अपने कोड के दूसरे हिस्से में ऑब्जेक्ट का नाम फिर से इस्तेमाल किया हो। इसलिए किसी ऑब्जेक्ट से एक मानक चर पर इसका पहलू बदलना

अर्थात

 $game = new game; $game->doGameStuff($gameReturn); foreach($gameArray as $game) { $game['STUFF']; // No longer an object and is now a standard variable pointer for $game. } $game->doGameStuff($gameReturn); // Wont work because $game is declared as a standard variable. You need to be careful when using common variable names and were they are declared in your code. 

ऑब्जेक्ट पैरामीटर के रूप में पास करने के बजाय, आप ऑब्जेक्ट को पेज_प्रॉपर्टीज़ फ़ंक्शन के अंदर वैश्विक रूप से घोषित कर सकते हैं।

 $objPage = new PageAtrributes; function page_properties() { global $objPage; $objPage->set_page_title($myrow['title']); } 
 function page_properties($objPortal) { $objPage->set_page_title($myrow['title']); } 

वैर के विभिन्न नामों की तरह दिखता है $ objPortal vs $ objPage

आप उपयोग में 'उपयोग' का प्रयोग कर सकते हैं जैसे कि उदाहरण के उदाहरण

 function page_properties($objPortal) use($objPage){ $objPage->set_page_title($myrow['title']); } 

मुझे एहसास हुआ कि मैं $ objPage page_properties () में नहीं गुजर रहा था यह अभी ठीक काम करता है