2017-04-02 19 views
11

मेरे पास app/Helpers में कुछ सहायक वर्ग हैं। ब्लेड टेम्पलेट्स में उनका उपयोग करने के लिए service provider का उपयोग करके मैं इन कक्षाओं को कैसे लोड करूं?लार्वेल में कस्टम सहायक वर्ग 5.4

उदा।

<?php 

nampespace App\Helpers; 

class CustomHelper 
{ 
    static function fooBar() 
    { 
     return 'it works!'; 
    } 
} 

मैं अपने ब्लेड टेम्पलेट्स में कुछ इस तरह करने में सक्षम होना चाहता हूँ: बजाय ऐसा करने का

{{ fooBar() }} 

:

{{ \App\Helpers\CustomHelper::fooBar() }} 
अगर मैं एक वर्ग CustomHelper कि एक विधि fooBar() शामिल है

पीएस: @ एंड्रू-ब्राउन का answerBest practices for custom helpers on Laravel 5 सौदों में वाई वें गैर-वर्ग फाइलें। वर्ग आधारित समाधान होना अच्छा होगा ताकि सहायक वर्गों को वर्गों के बीच व्यवस्थित किया जा सके।

+0

https तरीका है /laravel.io/forum/02-03-2015-best-practices-for- कस्टम-helpers-on-laravel-5?page=1#reply-20564 – hassan

+0

भी http://stackoverflow.com/a/32772686/ 2359679 – hassan

+0

आप कक्षा आधारित समाधान को कार्यान्वित करना चाहते हैं लेकिन इसे वैश्विक फ़ंक्शन की तरह उपयोग करना चाहते हैं? ऐसा मत सोचो कि किसी भी भाषा में संभव है, अकेले PHP या लार्वेल दें – Paras

उत्तर

27

मुझे नहीं लगता कि आपके कक्षाओं में कोड होने पर केवल फ़ंक्शन का उपयोग करना संभव है। खैर, आप ब्लेड को विस्तारित करने का प्रयास कर सकते हैं लेकिन यह बहुत अधिक है।

क्या आप उदाहरण app\Helpers\helpers.php के लिए और अपने composer.json फ़ाइल में, क्या करना चाहिए एक अतिरिक्त फ़ाइल पैदा कर रही है डाल:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    }, 
    "files": ["app/Helpers/helpers.php"] // <- this line was added 
}, 

app/Helpers/helpers.php फ़ाइल बनाते हैं और अपने app/Helpers/helpers.php फ़ाइल में चला

composer dump-autoload 

अब आप उन कस्टम कार्यों को उदाहरण के लिए जोड़ सकते हैं उदाहरण के लिए:

if (! function_exists('fooBar')) { 
    function fooBar() 
    { 
     return \App\Helpers\CustomHelper::fooBar(); 
    } 
} 

ताकि आप वैश्विक कार्यों को परिभाषित कर सकें लेकिन वास्तव में उनमें से सभी कुछ वर्गों से विशिष्ट सार्वजनिक तरीकों का उपयोग कर सकते हैं।

तरीका यह वास्तव में क्या Laravel उदाहरण के लिए अपने स्वयं के सहायकों के लिए करता है द्वारा: /:

if (! function_exists('array_add')) { 
    function array_add($array, $key, $value) 
    { 
     return Arr::add($array, $key, $value); 
    } 
} 

के रूप में आप array_add देख ही कम (या शायद कम शब्द) Arr::add लिखने की

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