English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
Bu belge otomatik olarak çevrilmiştir. Eğer çeviri hataları varsa lütfen projede
pull request açın ve çevrilmiş dosyayı docs/{ISO 639-1 Kodu}.md dosyasına ekleyin.
Ekim 2023'e kadar olan verilerle eğitildiniz.
Faker Storage, büyük hacimli sahte veri dosyalarını verimli bir şekilde oluşturmak ve depolamak için tasarlanmış yüksek performanslı bir PHP paketidir. Eşzamanlılık düşünülerek inşa edilmiştir ve binlerce dosyayı paralel olarak oluşturmak için Swoole veya PCNTL'den yararlanır, bu da onu yük testi, geliştirme ortamları ve depolama sistemi kıyaslamaları için ideal hale getirir.
Paket, resimler (PNG, JPG, GIF, BMP, WEBP, AVIF), metin dosyaları, CSV dosyaları, ikili veri ve RFC822 uyumlu e-postalar dahil olmak üzere çeşitli dosya türleri oluşturmak için akıcı bir API sağlar. Her bir jeneratör, tohumlandığında belirleyici bir çıktı üretir ve bu da ortamlar arasında tekrarlanabilir test verileri sağlar.
use DefectiveCode\Faker\Faker;use League\Flysystem\Filesystem;use DefectiveCode\Faker\Generators\Png;use League\Flysystem\Local\LocalFilesystemAdapter; // 10 eşzamanlı işçi ile 1000 PNG resmi oluşturFaker::make(Png::class) ->width(800, 1920) ->height(600, 1080) ->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage'))) ->basePath('images') ->count(1000) ->concurrency(10) ->seed(42) ->generate(); // CSV dosyaları oluşturuse DefectiveCode\Faker\Generators\Csv; Faker::make(Csv::class) ->columns(5, 10) ->rows(100, 500) ->delimiter(',') ->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage'))) ->count(50) ->generate(); // Ekli e-postalar oluşturuse DefectiveCode\Faker\Generators\Email; Faker::make(Email::class) ->paragraphs(3, 5) ->sentences(2, 4) ->withAttachment(Png::class, 1, 3) ->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage'))) ->count(100) ->generate();
Paketi Composer ile yükleyin:
composer require defectivecode/faker-storage
En iyi performans için Swoole uzantısını yükleyin:
pecl install swoole
Paket, mevcutsa otomatik olarak Swoole'u kullanacak, aksi takdirde PCNTL'ye geri dönecektir.
Tüm jeneratörler aynı deseni takip eder:
use DefectiveCode\Faker\Faker;use League\Flysystem\Filesystem;use DefectiveCode\Faker\Generators\Text;use League\Flysystem\Local\LocalFilesystemAdapter; Faker::make(Text::class) ->paragraphs(5, 10) // Jeneratöre özgü yapılandırma ->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage'))) ->basePath('documents') // Dosyalar /storage/documents/ içinde olacak ->count(100) // 100 dosya oluştur ->concurrency(4) // 4 işçi kullan ->seed(123) // Belirli bir çıktı için ->generate();
Faker Depolama, depolama soyutlaması için League Flysystem kullanır:
use League\Flysystem\Filesystem;use League\Flysystem\Local\LocalFilesystemAdapter; // Yerel depolama$filesystem = new Filesystem(new LocalFilesystemAdapter('/path/to/storage')); Faker::make(Png::class) ->toDisk($filesystem) ->generate();
use Aws\S3\S3Client;use League\Flysystem\Filesystem;use League\Flysystem\AwsS3V3\AwsS3V3Adapter; $client = new S3Client([ 'credentials' => [ 'key' => 'your-key', 'secret' => 'your-secret', ], 'region' => 'us-east-1', 'version' => 'latest',]); $adapter = new AwsS3V3Adapter($client, 'your-bucket-name');$filesystem = new Filesystem($adapter); Faker::make(Png::class) ->toDisk($filesystem) ->basePath('uploads/images') ->generate();
Dosya sistemi adaptörüne ek seçenekler iletin:
Faker::make(Png::class) ->toDisk($filesystem) ->diskOptions([ 'visibility' => 'public', 'ACL' => 'public-read', 'CacheControl' => 'max-age=31536000', ]) ->generate();
concurrency() yöntemi ile paralel yürütmeyi kontrol edin:
// 10 işçi iş parçacığı/prosesi kullanFaker::make(Png::class) ->concurrency(10) ->generate(); // Swoole-özel: Hem iş parçacıklarını hem de iş parçacığı başına korotinleri ayarlayınFaker::make(Png::class) ->concurrency(threads: 4, coroutines: 8) // 4 işçi, her biri 8 korotin ->generate();
Varsayılan olarak, dosyalar UUID v4 kullanılarak adlandırılır:
// Üretir: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.pngFaker::make(Png::class)->generate();
use DefectiveCode\Faker\NameGenerator; // UUID tabanlı (varsayılan)NameGenerator::setDefault('uuid'); // Üretir: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.png // Sıralı numaralandırmaNameGenerator::setDefault('sequence'); // Üretir: 1.png, 2.png, 3.png, ...
Dosya adlarını özelleştirmek için bir closure sağlayın:
use DefectiveCode\Faker\NameGenerator; // Özel closureFaker::make(Png::class) ->nameGenerator(function (int $seed, int $completedFiles, $generator) { return "custom-{$completedFiles}-{$seed}.png"; }) ->generate(); // Tarih tabanlı adlandırmaFaker::make(Png::class) ->nameGenerator(function (int $seed, int $completedFiles, $generator) { return date('Y/m/d') . "/image-{$completedFiles}.png"; }) ->generate();
Aynı dosyaları farklı çalıştırmalarda oluşturmak için bir tohum ayarlayın:
Faker::make(Png::class) ->seed(42) ->count(10) ->generate();
Her dosya, temel tohum ve dosya indeksinden türetilen benzersiz bir belirleyici tohum alır.
Tüm görüntü üreteçleri boyut ve kalite yapılandırmasını destekler.
use DefectiveCode\Faker\Generators\Png; Faker::make(Png::class) ->width(800, 1920) // 800-1920px arasında rastgele genişlik ->height(600, 1080) // 600-1080px arasında rastgele yükseklik ->withAlpha(true) // Alfa/şeffaflık kanalını etkinleştir ->grid(5) // İsteğe bağlı: 5x5 simetrik desen oluştur ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Jpg; Faker::make(Jpg::class) ->width(800, 1920) // 800-1920px arasında rastgele genişlik ->height(600, 1080) // 600-1080px arasında rastgele yükseklik ->grid(5) // İsteğe bağlı: 5x5 simetrik desen oluştur ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Gif; Faker::make(Gif::class) ->width(800, 1920) // 800-1920px arasında rastgele genişlik ->height(600, 1080) // 600-1080px arasında rastgele yükseklik ->withAlpha(true) // Alfa/şeffaflık kanalını etkinleştir ->grid(5) // İsteğe bağlı: 5x5 simetrik desen oluştur ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Bmp; Faker::make(Bmp::class) ->width(800, 1920) // 800-1920px arasında rastgele genişlik ->height(600, 1080) // 600-1080px arasında rastgele yükseklik ->grid(5) // İsteğe bağlı: 5x5 simetrik desen oluştur ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Webp; Faker::make(Webp::class) ->width(800, 1920) // 800-1920px arasında rastgele genişlik ->height(600, 1080) // 600-1080px arasında rastgele yükseklik ->withAlpha(true) // Alfa/şeffaflık kanalını etkinleştir ->grid(5) // İsteğe bağlı: 5x5 simetrik desen oluştur ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Avif; Faker::make(Avif::class) ->width(800, 1920) // 800-1920px arasında rastgele genişlik ->height(600, 1080) // 600-1080px arasında rastgele yükseklik ->withAlpha(true) // Alfa/şeffaflık kanalını etkinleştir ->grid(5) // İsteğe bağlı: 5x5 simetrik desen oluştur ->toDisk($filesystem) ->generate();
Rastgele bir görüntü formatı oluşturur:
use DefectiveCode\Faker\Generators\RandomImage; Faker::make(RandomImage::class) ->width(800, 1920) ->height(600, 1080) ->withAlpha(false) // Rastgele: AVIF, BMP, GIF, JPEG, PNG, WEBP ->toDisk($filesystem) ->generate(); Faker::make(RandomImage::class) ->width(800, 1920) ->height(600, 1080) ->withAlpha(true) // Rastgele: AVIF, GIF, PNG, WEBP ->toDisk($filesystem) ->generate();
Paragraflarla düz metin dosyaları oluşturun:
use DefectiveCode\Faker\Generators\Text; Faker::make(Text::class) ->paragraphs(5, 10) // Dosya başına 5-10 paragraf ->sentences(3, 6) // Paragraf başına 3-6 cümle ->toDisk($filesystem) ->generate();
Çıktı Örneği:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Rastgele verilerle CSV dosyaları oluşturun:
use DefectiveCode\Faker\Generators\Csv; Faker::make(Csv::class) ->columns(5, 10) // 5-10 sütun ->rows(100, 500) // 100-500 satır ->delimiter(',') // Sütun ayırıcı ->enclosure('"') // Alan sınırlayıcı ->escape('\\') // Kaçış karakteri ->eol("\n") // Satır sonu ->toDisk($filesystem) ->generate();
Çıktı Örneği:
"John Doe","john@example.com","555-1234","New York","Engineer""Jane Smith","jane@example.com","555-5678","Los Angeles","Designer""Bob Johnson","bob@example.com","555-9012","Chicago","Manager"
Rastgele ikili veri oluşturun:
use DefectiveCode\Faker\Generators\Binary; Faker::make(Binary::class) ->length(1024, 1048576) // 1KB - 1MB ->toDisk($filesystem) ->generate();
RFC822 uyumlu e-posta dosyaları oluşturun:
use DefectiveCode\Faker\Generators\Email; Faker::make(Email::class) ->paragraphs(3, 5) // E-posta gövdesinde paragraflar ->sentences(2, 4) // Paragraf başına cümleler ->withAttachment(Png::class, 1, 3) // 1-3 PNG eki ekle ->toDisk($filesystem) ->generate();
Oluşturulan e-postalar şunları içerir:
To: Rastgele isim ve e-postaFrom: Rastgele isim ve e-postaSubject: Rastgele cümleDate: Geçerli zaman damgasıMessage-ID: Tohuma dayalı belirleyici IDDosyaları üreteç sınıf adları veya örnekleri kullanarak ekleyin:
use DefectiveCode\Faker\Generators\Email;use DefectiveCode\Faker\Generators\Png;use DefectiveCode\Faker\Generators\Pdf; Faker::make(Email::class) ->withAttachment(Png::class, 1, 3) // 1-3 PNG eki ->generate(); // Yapılandırılmış üreteç örneği kullanarak ekle$pngGenerator = new Png(Png::getDefaultConfig());$pngGenerator->width(400, 800)->height(300, 600); Faker::make(Email::class) ->withAttachment($pngGenerator, 2, 5) ->generate();
Çıktı Örneği:
To: John Doe <john.doe@example.com>From: Jane Smith <jane.smith@example.com>Subject: Yarın önemli toplantıDate: Fri, 03 Jan 2026 10:30:00 +0000Message-ID: <3e92e5c2b0d632b3a36fbbb17484b7fe@example.com>Content-Type: multipart/mixed; boundary="----=_Part_123" ------=_Part_123Content-Type: text/plain; charset=utf-8Content-Transfer-Encoding: quoted-printable Lorem ipsum dolor sit amet, consectetur adipiscing elit... ------=_Part_123Content-Type: image/png; name="attachment.png"Content-Disposition: attachment; filename="attachment.png"Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==------=_Part_123--
Generator arayüzünü uygulayarak kendi üreticilerinizi oluşturun:
use DefectiveCode\Faker\Configs\Config;use DefectiveCode\Faker\Concerns\SetsSeed;use DefectiveCode\Faker\Generators\Generator;use DefectiveCode\Faker\Concerns\PreparesFaker; class MyCustomGenerator implements Generator{ use PreparesFaker; use SetsSeed; public function __construct(public Config $config) {} public static function getDefaultConfig(): Config { return new MyCustomConfig([ 'contentType' => 'application/x-custom', 'nameGenerator' => NameGenerator::default('extension'), ]); } public function generate(): mixed { // Burada üretim mantığınızı yazın $data = $this->faker->randomElement(['foo', 'bar', 'baz']); $stream = fopen('php://temp', 'w+'); fwrite($stream, $data); return $stream; }} // Özel üreticinizi kullanınFaker::make(MyCustomGenerator::class) ->toDisk($filesystem) ->generate();
Her üretici, Config sınıfını genişleten bir konfigürasyon sınıfı kullanır:
use DefectiveCode\Faker\Configs\Config; class MyCustomConfig extends Config{ public int $minValue = 1; public int $maxValue = 100;}
Ekim 2023'e kadar olan veriler üzerinde eğitildiniz.
Bu yöntemler tüm Faker örneklerinde mevcuttur:
make(string $generator): FakerBelirtilen jeneratör ile yeni bir Faker örneği oluşturun:
Faker::make(Png::class)
toDisk(Filesystem $filesystem): FakerDepolama hedefini ayarlayın (gerekli):
Faker::make(Png::class) ->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage')))
basePath(string $basePath): FakerDosya sisteminde temel yolu ayarlayın:
Faker::make(Png::class) ->basePath('images/uploads') // Dosyalar /storage/images/uploads/ içinde saklanır
count(int $count): FakerOluşturulacak dosya sayısını ayarlayın:
Faker::make(Png::class) ->count(1000)
concurrency(int $threads, ?int $coroutines = null): FakerParalel yürütmeyi yapılandırın:
// Temel eşzamanlılıkFaker::make(Png::class) ->concurrency(4) // Swoole-özel: iş parçacıkları ve korotinlerFaker::make(Png::class) ->concurrency(threads: 4, coroutines: 8)
seed(int $seed): FakerBelirleyici üretim için tohum ayarlayın:
Faker::make(Png::class) ->seed(42)
nameGenerator(Closure $generator): FakerDosya adlandırmayı özelleştirin:
Faker::make(Png::class) ->nameGenerator(function (int $seed, int $completedFiles, $generator) { return "file-{$completedFiles}.png"; })
diskOptions(array $diskOptions): FakerDosya sistemi adaptörüne seçenekler iletin:
Faker::make(Png::class) ->diskOptions([ 'visibility' => 'public', 'ACL' => 'public-read', ])
generate(): voidDosya üretimini gerçekleştirin:
Faker::make(Png::class)->generate();
Açık kaynak paketimizi seçtiğiniz için teşekkürler! Lütfen bu destek yönergelerini incelemek için bir dakikanızı ayırın. Projemizden en iyi şekilde yararlanmanıza yardımcı olacaklar.
Açık kaynak projemiz harika topluluğumuz tarafından desteklenmektedir. Sorularınız varsa veya yardıma ihtiyacınız varsa, StackOverflow ve diğer çevrimiçi kaynaklar en iyi seçeneklerinizdir.
Açık kaynak bir projeyi yönetmenin gerçeği, bildirilen her hatayı veya özellik isteğini hemen ele alamayacağımız anlamına gelir. Sorunları şu sırayla önceliklendiriyoruz:
Ücretli ürünlerimizi etkileyen hatalar her zaman en yüksek önceliğimiz olacaktır. Bazı durumlarda, yalnızca bizi doğrudan etkileyen hataları ele alabiliriz.
Bir hata tespit ettiyseniz ve bir çözümünüz varsa, lütfen bir çekme isteği gönderin. Ürünlerimizi etkileyen sorunlardan sonra, bu topluluk odaklı düzeltmelere en yüksek önceliği veriyoruz. İncelendikten ve onaylandıktan sonra, çözümünüzü birleştirip katkınızı takdir edeceğiz.
Belirtilen kategorilerin dışındaki sorunlar için, çözümün finanse edilmesini tercih edebilirsiniz. Her açık sorun, mali olarak katkıda bulunabileceğiniz bir sipariş formuna bağlıdır. Bu sorunları sağlanan finansman miktarına göre önceliklendiriyoruz.
Açık kaynak, topluluğu aktif olduğunda gelişir. Hataları düzeltmeseniz bile, kod iyileştirmeleri, belge güncellemeleri, eğitimler veya topluluk kanallarında başkalarına yardım ederek katkıda bulunmayı düşünün. Herkesi, bir topluluk olarak, açık kaynak çalışmasını desteklemeye teşvik ediyoruz.
Tekrar belirtmek gerekirse, DefectiveCode hataları, ücretli ürünlerimizi nasıl etkilediğine, topluluk çekme isteklerine ve sorunlar için alınan mali desteğe göre önceliklendirecektir.
Telif Hakkı © Defective Code, LLC. Tüm hakları saklıdır
Bu yazılımın ve ilgili dokümantasyon dosyalarının ("Yazılım") bir kopyasını edinen herkese, aşağıdaki koşullar altında, Yazılımı herhangi bir kısıtlama olmaksızın kullanma, kopyalama, değiştirme, birleştirme, yayınlama, dağıtma, alt lisans verme ve/veya Yazılımın kopyalarını satma hakları ücretsiz olarak verilmektedir ve bu kişilere Yazılımın sağlandığı kişilere de bu hakları vermelerine izin verilmektedir:
Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılımın tüm kopyalarına veya önemli bölümlerine dahil edilmelidir.
YAZILIM, HERHANGİ BİR TÜRDE, AÇIK VEYA ZIMNİ, TİCARİ ELVERİŞLİLİK, BELİRLİ BİR AMACA UYGUNLUK VE İHLAL ETMEME GARANTİLERİ DAHİL ANCAK BUNLARLA SINIRLI OLMAMAK ÜZERE, HERHANGİ BİR GARANTİ OLMAKSIZIN "OLDUĞU GİBİ" SAĞLANMAKTADIR. HİÇBİR DURUMDA YAZARLAR VEYA TELİF HAKKI SAHİPLERİ, SÖZLEŞME, HAKSIZ FİİL VEYA BAŞKA BİR ŞEKİLDE, YAZILIMDAN VEYA YAZILIMIN KULLANIMI VEYA DİĞER İŞLEMLERDEN KAYNAKLANAN HERHANGİ BİR TALEP, ZARAR VEYA DİĞER SORUMLULUKLARDAN SORUMLU OLMAYACAKTIR.