English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
Ovaj dokument je automatski preveden. Ako postoje greške u prevodu, molimo vas da otvorite
pull request na
projektu i dodate prevedeni fajl u docs/{ISO 639-1 Code}.md.
Obučeni ste na podacima do oktobra 2023. godine.
Faker Storage je visokoperformansni PHP paket dizajniran za generisanje i skladištenje velikih količina lažnih podataka efikasno. Izgrađen sa konkurentnošću na umu, koristi Swoole ili PCNTL za generisanje hiljada fajlova paralelno, što ga čini idealnim za testiranje opterećenja, razvojna okruženja i merenje performansi skladišnih sistema.
Paket pruža fluentni API za generisanje različitih tipova fajlova uključujući slike (PNG, JPG, GIF, BMP, WEBP, AVIF), tekstualne fajlove, CSV fajlove, binarne podatke i RFC822-kompatibilne emailove. Svaki generator proizvodi deterministički izlaz kada je postavljen, osiguravajući reproduktivne test podatke kroz okruženja.
use DefectiveCode\Faker\Faker;use League\Flysystem\Filesystem;use DefectiveCode\Faker\Generators\Png;use League\Flysystem\Local\LocalFilesystemAdapter; // Generiši 1000 PNG slika sa 10 konkurentnih radnikaFaker::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(); // Generiši CSV fajloveuse 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(); // Generiši emailove sa prilozimause 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();
Instalirajte paket putem Composera:
composer require defectivecode/faker-storage
Za optimalne performanse, instalirajte Swoole ekstenziju:
pecl install swoole
Paket će automatski koristiti Swoole ako je dostupan, inače će se vratiti na PCNTL.
Svi generatori slijede isti obrazac:
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) // Konfiguracija specifična za generator ->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage'))) ->basePath('documents') // Datoteke će biti u /storage/documents/ ->count(100) // Generiši 100 datoteka ->concurrency(4) // Koristi 4 radnika ->seed(123) // Za deterministički izlaz ->generate();
Faker Pohrana koristi League Flysystem za apstrakciju pohrane:
use League\Flysystem\Filesystem;use League\Flysystem\Local\LocalFilesystemAdapter; // Lokalna pohrana$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();
Proslijedite dodatne opcije adapteru za datotečni sistem:
Faker::make(Png::class) ->toDisk($filesystem) ->diskOptions([ 'visibility' => 'public', 'ACL' => 'public-read', 'CacheControl' => 'max-age=31536000', ]) ->generate();
Kontrolišite paralelno izvršavanje metodom concurrency():
// Koristi 10 radnih niti/procesaFaker::make(Png::class) ->concurrency(10) ->generate(); // Specifično za Swoole: Postavite i niti i korutine po nitiFaker::make(Png::class) ->concurrency(threads: 4, coroutines: 8) // 4 radnika, 8 korutina svaki ->generate();
Po defaultu, datoteke se imenuju koristeći UUID v4:
// Generiše: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.pngFaker::make(Png::class)->generate();
use DefectiveCode\Faker\NameGenerator; // Bazirano na UUID (default)NameGenerator::setDefault('uuid'); // Generiše: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.png // Sekvencijalno numerisanjeNameGenerator::setDefault('sequence'); // Generiše: 1.png, 2.png, 3.png, ...
Pružite zatvaranje za prilagođavanje imena datoteka:
use DefectiveCode\Faker\NameGenerator; // Prilagođeno zatvaranjeFaker::make(Png::class) ->nameGenerator(function (int $seed, int $completedFiles, $generator) { return "custom-{$completedFiles}-{$seed}.png"; }) ->generate(); // Imenovanje bazirano na datumuFaker::make(Png::class) ->nameGenerator(function (int $seed, int $completedFiles, $generator) { return date('Y/m/d') . "/image-{$completedFiles}.png"; }) ->generate();
Postavite sjeme da generišete iste datoteke kroz pokretanja:
Faker::make(Png::class) ->seed(42) ->count(10) ->generate();
Svaka datoteka dobija jedinstveno determinističko sjeme izvedeno iz osnovnog sjemena i indeksa datoteke.
Svi generatori slika podržavaju konfiguraciju dimenzija i kvaliteta.
use DefectiveCode\Faker\Generators\Png; Faker::make(Png::class) ->width(800, 1920) // Nasumična širina između 800-1920px ->height(600, 1080) // Nasumična visina između 600-1080px ->withAlpha(true) // Omogući alfa/transparentni kanal ->grid(5) // Opcionalno: Generiši simetrični uzorak 5x5 ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Jpg; Faker::make(Jpg::class) ->width(800, 1920) // Nasumična širina između 800-1920px ->height(600, 1080) // Nasumična visina između 600-1080px ->grid(5) // Opcionalno: Generiši simetrični uzorak 5x5 ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Gif; Faker::make(Gif::class) ->width(800, 1920) // Nasumična širina između 800-1920px ->height(600, 1080) // Nasumična visina između 600-1080px ->withAlpha(true) // Omogući alfa/transparentni kanal ->grid(5) // Opcionalno: Generiši simetrični uzorak 5x5 ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Bmp; Faker::make(Bmp::class) ->width(800, 1920) // Nasumična širina između 800-1920px ->height(600, 1080) // Nasumična visina između 600-1080px ->grid(5) // Opcionalno: Generiši simetrični uzorak 5x5 ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Webp; Faker::make(Webp::class) ->width(800, 1920) // Nasumična širina između 800-1920px ->height(600, 1080) // Nasumična visina između 600-1080px ->withAlpha(true) // Omogući alfa/transparentni kanal ->grid(5) // Opcionalno: Generiši simetrični uzorak 5x5 ->toDisk($filesystem) ->generate();
use DefectiveCode\Faker\Generators\Avif; Faker::make(Avif::class) ->width(800, 1920) // Nasumična širina između 800-1920px ->height(600, 1080) // Nasumična visina između 600-1080px ->withAlpha(true) // Omogući alfa/transparentni kanal ->grid(5) // Opcionalno: Generiši simetrični uzorak 5x5 ->toDisk($filesystem) ->generate();
Generiše nasumični format slike:
use DefectiveCode\Faker\Generators\RandomImage; Faker::make(RandomImage::class) ->width(800, 1920) ->height(600, 1080) ->withAlpha(false) // Nasumično od: AVIF, BMP, GIF, JPEG, PNG, WEBP ->toDisk($filesystem) ->generate(); Faker::make(RandomImage::class) ->width(800, 1920) ->height(600, 1080) ->withAlpha(true) // Nasumično od: AVIF, GIF, PNG, WEBP ->toDisk($filesystem) ->generate();
Generiši obične tekstualne datoteke s paragrafima:
use DefectiveCode\Faker\Generators\Text; Faker::make(Text::class) ->paragraphs(5, 10) // 5-10 paragrafa po datoteci ->sentences(3, 6) // 3-6 rečenica po paragrafu ->toDisk($filesystem) ->generate();
Primjer izlaza:
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.
Generiši CSV datoteke s nasumičnim podacima:
use DefectiveCode\Faker\Generators\Csv; Faker::make(Csv::class) ->columns(5, 10) // 5-10 kolona ->rows(100, 500) // 100-500 redova ->delimiter(',') // Razdjelnik kolona ->enclosure('"') // Ograda polja ->escape('\\') // Znak za bijeg ->eol("\n") // Kraj linije ->toDisk($filesystem) ->generate();
Primjer izlaza:
"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"
Generiši nasumične binarne podatke:
use DefectiveCode\Faker\Generators\Binary; Faker::make(Binary::class) ->length(1024, 1048576) // 1KB - 1MB ->toDisk($filesystem) ->generate();
Generiši RFC822-kompatibilne email datoteke:
use DefectiveCode\Faker\Generators\Email; Faker::make(Email::class) ->paragraphs(3, 5) // Paragrafi u tijelu emaila ->sentences(2, 4) // Rečenice po paragrafu ->withAttachment(Png::class, 1, 3) // Dodaj 1-3 PNG privitka ->toDisk($filesystem) ->generate();
Generisani emailovi uključuju:
To: Nasumično ime i emailFrom: Nasumično ime i emailSubject: Nasumična rečenicaDate: Trenutni vremenski pečatMessage-ID: Deterministički ID baziran na sjemenuPriloži datoteke koristeći nazive ili instance generatora:
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 privitka ->generate(); // Priloži koristeći konfiguriranu instancu generatora$pngGenerator = new Png(Png::getDefaultConfig());$pngGenerator->width(400, 800)->height(300, 600); Faker::make(Email::class) ->withAttachment($pngGenerator, 2, 5) ->generate();
Primjer izlaza:
To: John Doe <john.doe@example.com>From: Jane Smith <jane.smith@example.com>Subject: Važan sastanak sutraDate: 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--
Kreirajte vlastite generatore implementirajući Generator interfejs:
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 { // Vaša logika generisanja ovdje $data = $this->faker->randomElement(['foo', 'bar', 'baz']); $stream = fopen('php://temp', 'w+'); fwrite($stream, $data); return $stream; }} // Koristite vaš prilagođeni generatorFaker::make(MyCustomGenerator::class) ->toDisk($filesystem) ->generate();
Svaki generator koristi konfiguracijsku klasu koja proširuje Config:
use DefectiveCode\Faker\Configs\Config; class MyCustomConfig extends Config{ public int $minValue = 1; public int $maxValue = 100;}
Obučeni ste na podacima do oktobra 2023.
Ove metode su dostupne na svim Faker instancama:
make(string $generator): FakerKreirajte novu Faker instancu sa specificiranim generatorom:
Faker::make(Png::class)
toDisk(Filesystem $filesystem): FakerPostavite odredište za pohranu (obavezno):
Faker::make(Png::class) ->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage')))
basePath(string $basePath): FakerPostavite osnovnu putanju unutar datotečnog sistema:
Faker::make(Png::class) ->basePath('images/uploads') // Datoteke pohranjene u /storage/images/uploads/
count(int $count): FakerPostavite broj datoteka za generisanje:
Faker::make(Png::class) ->count(1000)
concurrency(int $threads, ?int $coroutines = null): FakerKonfigurišite paralelno izvršavanje:
// Osnovna konkurentnostFaker::make(Png::class) ->concurrency(4) // Swoole-specifično: niti i korutineFaker::make(Png::class) ->concurrency(threads: 4, coroutines: 8)
seed(int $seed): FakerPostavite sjeme za determinističko generisanje:
Faker::make(Png::class) ->seed(42)
nameGenerator(Closure $generator): FakerPrilagodite imenovanje datoteka:
Faker::make(Png::class) ->nameGenerator(function (int $seed, int $completedFiles, $generator) { return "file-{$completedFiles}.png"; })
diskOptions(array $diskOptions): FakerProslijedite opcije adapteru datotečnog sistema:
Faker::make(Png::class) ->diskOptions([ 'visibility' => 'public', 'ACL' => 'public-read', ])
generate(): voidIzvršite generisanje datoteka:
Faker::make(Png::class)->generate();
Hvala što ste odabrali naš paket otvorenog koda! Molimo vas da odvojite trenutak da pregledate ove smjernice za podršku. One će vam pomoći da izvučete maksimum iz našeg projekta.
Naš projekt otvorenog koda pokreće naša sjajna zajednica. Ako imate pitanja ili trebate pomoć, StackOverflow i drugi online resursi su vaša najbolja opcija.
Realnost upravljanja projektom otvorenog koda znači da ne možemo odmah riješiti svaku prijavljenu grešku ili zahtjev za funkcionalnost. Prioritet dajemo problemima u sljedećem redoslijedu:
Greške koje utiču na naše plaćene proizvode uvijek će biti naš glavni prioritet. U nekim slučajevima, možda ćemo riješiti samo greške koje direktno utiču na nas.
Ako ste identificirali grešku i imate rješenje, molimo vas da podnesete pull zahtjev. Nakon problema koji utiču na naše proizvode, sljedeći najviši prioritet dajemo ovim rješenjima vođenim zajednicom. Nakon pregleda i odobrenja, spojit ćemo vaše rješenje i priznati vaš doprinos.
Za probleme izvan navedenih kategorija, možete se odlučiti za financiranje njihovog rješavanja. Svako otvoreno pitanje je povezano s narudžbenicom gdje možete financijski doprinijeti. Prioritet dajemo ovim problemima na osnovu iznosa financiranja.
Otvoreni kod napreduje kada je njegova zajednica aktivna. Čak i ako ne popravljate greške, razmislite o doprinosu kroz poboljšanja koda, ažuriranja dokumentacije, tutorijale ili pomažući drugima u kanalima zajednice. Toplo ohrabrujemo sve, kao zajednicu, da pomognu podržati rad otvorenog koda.
Da ponovimo, DefectiveCode će prioritizirati greške na osnovu toga kako utiču na naše plaćene proizvode, pull zahtjeve zajednice i financijsku podršku primljenu za probleme.
Autorska prava © Defective Code, LLC. Sva prava zadržana
Dozvola se ovim putem daje, besplatno, svakoj osobi koja dobije kopiju ovog softvera i pratećih dokumentacijskih datoteka (u daljem tekstu "Softver"), da koristi Softver bez ograničenja, uključujući bez ograničenja prava na korištenje, kopiranje, modifikaciju, spajanje, objavljivanje, distribuciju, podlicenciranje i/ili prodaju kopija Softvera, i da dozvoli osobama kojima je Softver dostavljen da to učine, pod sljedećim uvjetima:
Gore navedena obavijest o autorskim pravima i ova dozvola moraju biti uključeni u sve kopije ili značajne dijelove Softvera.
SOFTVER SE PRUŽA "KAKAV JEST", BEZ JAMSTVA BILO KOJE VRSTE, IZRIČITOG ILI PODRAZUMIJEVANOG, UKLJUČUJUĆI ALI NE OGRANIČAVAJUĆI SE NA JAMSTVA PRODAJNOSTI, PODOBNOSTI ZA ODREĐENU SVRHU I NEKRŠENJA. NI U KOJEM SLUČAJU AUTORI ILI NOSITELJI AUTORSKIH PRAVA NEĆE BITI ODGOVORNI ZA BILO KOJI ZAHTJEV, ŠTETU ILI DRUGU ODGOVORNOST, BILO U UGOVORU, DELIKTU ILI NA DRUGI NAČIN, KOJI PROIZLAZI IZ, IZ ILI U VEZI SA SOFTVEROM ILI KORIŠTENJEM ILI DRUGIM POSLOVANJEM U SOFTVERU.