2016-07-07 13 views
7

में अपने स्वयं के फ़कर प्रदाता को कैसे कार्यान्वित करें मैं लारवेल में फेकर के लिए एक कस्टम प्रदाता बनाना चाहता हूं (उदाहरण के लिए एक यादृच्छिक भवन नाम के लिए)।लार्वेल

मैं अपने आवेदन में कस्टम प्रदाता कहां स्टोर करूं और मैं इसका उपयोग कैसे करूं?

उत्तर

9

आप php artisan का उपयोग करना चाहिए कस्टम प्रदाता उत्पन्न करने के लिए ...

कमांड लाइन पर, अपने अनुप्रयोग और प्रकार की जड़ पर नेविगेट ...

php artisan make:provider FakerServiceProvider 

कि एक नया प्रदाता उत्पन्न करनी चाहिए app/Providers फ़ोल्डर में। यहां मेरा रजिस्टर फ़ंक्शन फ़ेकर दस्तावेज़ों में उदाहरण को बंद करने जैसा दिखता है।

/** 
* Register the application services. 
* 
* @return void 
*/ 
public function register() 
{ 
    $this->app->singleton('Faker', function($app) { 
     $faker = \Faker\Factory::create(); 
     $newClass = new class($faker) extends \Faker\Provider\Base { 
      public function title($nbWords = 5) 
      { 
       $sentence = $this->generator->sentence($nbWords); 
       return substr($sentence, 0, strlen($sentence) - 1); 
      } 
     }; 

     $faker->addProvider($newClass); 
     return $faker; 
    }); 
} 

मैं यहां एक अज्ञात वर्ग का उपयोग कर रहा हूं। यदि आपके पास php < 7 है, तो आपको अपने नए प्रदाता वर्ग के साथ एक नई फ़ाइल बनाने की आवश्यकता होगी और उसमें प्रवेश करें। सुनिश्चित करें कि आप app/config.php में अपने नए प्रदाता को providers सरणी में भी जोड़ दें।

अब जब कि वह पंजीकृत है

, आप अपने नए ठग वर्ग निम्नलिखित का उपयोग कर

$faker = app('Faker'); 
echo $faker->title; 

ही प्राप्त कर सकते हैं ..., यदि आप https://laravel.com/docs/5.2/facades पर डॉक्स के माध्यम से जाने आप भी एक Faker मुखौटा काफी बनाने के लिए सक्षम होना चाहिए आसानी से। सभी भारी उठाने के लिए, आपको केवल नया मुखौटा वर्ग बनाना होगा, getFacadeAccessor'Faker' पर वापस आएं, और इसे app/config.php में अपने facades सरणी में जोड़ें।

तो फिर तुम बस इतना की तरह उपयोग कर सकते हैं ...

echo Faker::title; 
+0

मैं था '$ कारखाना> परिभाषित (एप्लिकेशन \ उपयोगकर्ता :: वर्ग, समारोह (ठग \ जेनरेटर $ ठग) {...' कारखानों में, इसलिए मैंने बाध्यकारी नाम को 'फेकर \ जेनरेटर' में बदल दिया। –

+0

@ x-yuri क्या आप अपने काम के बारे में अधिक सटीक हो सकते हैं? मेरे पास प्रोजेक्ट –

+0

@ रैप-2-एच के लिए एक समान आवश्यकता है जो मैं कर सकता हूं देखें, मुझे शायद मतलब था कि उत्तर में कोड 'फ़कर' वर्ग ('$ this-> ऐप-> सिंगलटन ('फ़कर' ... ') से जुड़ा हुआ है, लेकिन चूंकि मेरे पास' डेटाबेस में 'फ़ेकर \ जेनरेटर' था/कारखानों ', मैं शायद अतिरिक्त स्वरूपकों (इस मामले में' शीर्षक ') का उपयोग करने के लिए' फकर \ जेनरेटर 'से जुड़ा हुआ हूं। –