2012-01-24 5 views
10

में मैं केकपीएचपी 2.1 में एक छोटा सा एप्लीकेशन लिख रहा हूं, और मैं निक बेकर की फ़ाइल अपलोड प्लगइन का उपयोग करना चाहता हूं। मैंने केकेएफपी 2.0 शाखा डाउनलोड की है (मुझे पता है कि अभी तक नहीं किया गया है), और इसे मेरे ऐप्स प्लगइन फ़ोल्डर में रखा है। मैंने इस पर कुछ आवश्यक संशोधन किए हैं, लेकिन मुझे उत्सुकता है कि App::import फ़ंक्शन कॉल (FileUploadComponent, FileUploadBehavior और FileUploadHelper कक्षाओं की शुरुआत में) App:uses फ़ंक्शन के साथ उन App::import फ़ंक्शन कॉल को प्रतिस्थापित करने का सही तरीका क्या है।ऐप :: उपयोग (ऐप :: आयात के बजाय) केकपीएचपी 2.1 प्लगइन

इसे कॉन्फ़िगर/file_upload_settings.php से FileUploadSettings कक्षा और विक्रेता/upload.php से Uploader कक्षा आयात करने की आवश्यकता है। यह require_once फ़ंक्शन के साथ किया जा सकता है, लेकिन मुझे यकीन है कि ऐसा करने के लिए एक केकपीएचपी तरीका है।

उत्तर

10

केक मैनुअल App::import() के मुताबिक require_once() काम करता है। जो मैं समझता हूं उससे आप App:uses() और App:import() का उपयोग कर विक्रेता फ़ाइलों का उपयोग करके कक्षाएं लोड करेंगे।

API दस्तावेज़ कहते हैं इस विषय पर the following:

सभी वर्गों कि App::import(‘Core’, $class) का उपयोग कर सही पैकेज की चर्चा करते हुए App::uses() का उपयोग कर लोड किया जा करने की आवश्यकता होगी अतीत में भेजा गया। इस परिवर्तन ने ढांचे में बड़े प्रदर्शन लाभ प्रदान किए हैं।

  • विधि नहीं रह गया है रिकर्सिवली कक्षाओं के लिए लग रहा है, यह सख्ती से रास्तों App::build()
  • में परिभाषित के लिए मूल्यों यह App::import('Component', 'Component') उपयोग App::uses('Component', 'Controller'); लोड करने में सक्षम नहीं किया जा सकेगा।
  • कोर कक्षाओं को लोड करने के लिए App::import('Lib', 'CoreClass'); का उपयोग करना अब संभव नहीं है। एक गैर-मौजूद फ़ाइल आयात करना, गलत प्रकार या पैकेज नाम की आपूर्ति करना, या null$name और $file पैरामीटर के मानों के परिणामस्वरूप झूठी वापसी मान होगी।
  • App::import('Core', 'CoreClass') अब समर्थित नहीं है, App::uses() का उपयोग करें और कक्षा को स्वत: लोड करने दें।
  • लोडिंग विक्रेता फ़ाइलों को विक्रेता फ़ोल्डर में दोबारा नहीं दिखता है, यह फ़ाइल को अतीत में पहले से ही अंडरस्कोर में परिवर्तित नहीं करेगा।

माइग्रेशन मार्गदर्शिका भी some things to say के बारे में App:uses() है और सामान्य रूप में एक अच्छा प्रारंभिक बिंदु 1.3 और कम से पुराने तरीकों के साथ 2.0 के लिए सर्वोत्तम प्रथाओं की तुलना करने के लिए है।

This related question केक 2.0 में लोड हो रहा है विक्रेता फाइलों के साथ सौदों, मैं जोस लोरेंजो द्वारा दावा है कि App:import()require_once() के लिए एक "मूर्खतापूर्ण आवरण", और न ही बयान है कि यह फ़ाइलों सहित की पसंदीदा तरीका है सत्यापित नहीं कर सकता। केक योगदानकर्ताओं के लिए बाद में संदर्भ वाला एकमात्र संदर्भ Coding Standards में है, जैसे। डेवलपर्स केक कोर में योगदान, ढांचे पर बने अनुप्रयोग नहीं।मैं क्या एकत्रित की हैं से

App::import('Vendor', 'twitteroauth', array('file' => 'twitter'.DS.'twitteroauth'.DS.'twitteroauth.php')); 
27

:

संपादित

मान लीजिए कि आप Twitter OAuth library आयात करना चाहते हैं, Vendor/twitter में रहने वाले दो, मुख्य वर्ग फ़ाइल Vendor/twitter/twitteroauth/twitteroauth.php में twitteroauth.php है

  • बाहरी पुस्तकालयों के लिए import() का उपयोग
  • और uses() ढांचे के लिए

फ़ाइलें उदाहरण के लिए:

App::import('Vendor', 'ExternalLibrary'); 
App::uses('Inflector', 'Cake.Utility'); 
+3

सरल। सीधा। सही बात। धन्यवाद! – zmonteca

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