2015-04-19 24 views
16

Bu laravel 5.Dosya sistemi sınıfının glob yöntemini StorageFacade ile nasıl kullanabilirsiniz?

adında bir yöntem maalesef

glob($pattern, $flags = 0), bu yöntem laravel 5.

sevk varsayılan FilesystemAdapter yansıtılmaz Illuminate\Filesystem\Filesystem görebileceğiniz ilişkin olan bu olurdu Storage::disk('local')->glob([_]*[.blade.php]); (bir alt çizgi ile başlayan tüm kaydedilmiş blade dosyalarını almak için) yapmam gerekeceğinden dolayı harika,

Bunu başarmanın en temiz yolu nedir?

+0

Eğer 'Filesystem :: glob()' yi kullanmıyorsanız? Depolama ve onunla birlikte gider yapılandırma kullanarak izin vermeyeceğini 'dosya sistemini doğrudan :: topak()' kullanma – lukasgeiter

+0

... Ben yeni bir dosya Sürücü eklemek (veya "yerel" sürücüyü genişletmek) gerekir tahmin ama bu tarafta çok karmaşık ... –

+0

Dosya sistemi -> disk ('yerel') -> glob() 'yapamazsınız? – Laurence

cevap

7

Buraya glob koşamam düşünüyorum, ama tüm dosyaları almak ve daha sonra örneğin filtrelemedikçe olabilir:

Eğer (yinelemeli) files veya allFiles kullanmaya karar gerekir Tabii
$files = array_filter(Storage::disk('local')->files(), function ($file) 
{ 
    return preg_match('/_(.*)\.blade\.php$/U', $file); 
}); 

bağlı senin ihtiyacı vardır. Eğer binlerce dosya varsa muhtemelen en iyi çözüm değil ama eğer yeterli değilse

+0

Belki de "allFiles()" tekrarlayan eşleşme istenirse. – bishop

+0

Bunun söylendiği gibi, bu en zarif işlev değildir. Yerli php 'glob() işlevini kullanmayı tercih ederim. Zaten teklif için zaman ayırdığınız için Marcin teşekkürler :) –

+0

Ben Laravel Bağımlılık Enjeksiyon Konteyner kullanımı yapmaz özel bir dosya yardımcı sınıfı inşa bitti ama bu benim için hile yapacak ... @Marcin: yine de, kelle. ;-) –

İlgili konular