2017-04-02 30 views
11

app/Helpers numaralı telefondan yardım kurslarım var. Blade şablonlarında kullanmak için bu sınıfları bir service provider kullanarak nasıl yüklerim?Laravel'deki özel yardımcı sınıfları 5.4

örn.

<?php 

nampespace App\Helpers; 

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

benim bıçak şablonlarında böyle bir şey yapmak mümkün istiyorum:

{{ fooBar() }} 

yerine bunu yapmanın:

{{ \App\Helpers\CustomHelper::fooBar() }} 
Ben bir yöntem fooBar() içeren bir sınıf CustomHelper varsa

PS: @ andrew-brown Best practices for custom helpers on Laravel 5 içinde wi-kahverengi answer fırsatları wi sınıf dışı dosyalar. Sınıfsal bir çözüme sahip olmak güzel olurdu, böylece yardımcı fonksiyonlar sınıflar arasında organize edilebilir.

+0

https Arr::add yazma sadece kısa (veya belki daha az ayrıntılı) yoludur /laravel.io/forum/02-03-2015-best-practices-for-custom-helpers-on-laravel-5?page=1#reply-20564 – hassan

+0

Ayrıca http://stackoverflow.com/a/32772686/ 2359679 – hassan

+0

Sınıf tabanlı bir çözüm uygulamak, ancak bunu global bir işlev olarak kullanmak ister misiniz? Herhangi bir dilde mümkün olduğunu düşünmeyin, bırakın PHP veya laravel – Paras

cevap

27

Sadece sınıflarınızda kodunuz olduğunda işlev kullanmanın mümkün olduğunu düşünmüyorum. Peki, Blade'i genişletmeyi deneyebilirsin ama çok fazla.

Ne örneğin app\Helpers\helpers.php için ve composer.json dosyasında, bir ekstra dosyası oluşturuyor yapmalıyım koydu:

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

app/Helpers/helpers.php dosyası oluşturabilir ve app/Helpers/helpers.php dosyada Şimdi

composer dump-autoload 

çalıştırmak örneğin şu özel işlevleri ekleyebilirsiniz:

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

böylece global işlevleri tanımlayabilirsiniz, ancak bunların hepsi bazı sınıflardan belirli genel yöntemleri kullanabilir. Bu tam olarak laravel örneğin kendi yardımcıları için yaptığı iştir arada

: /:

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

Eğer array_add gördüğünüz gibi

İlgili konular