Le Data Fixtures sono classi utilizzate per caricare un set di dati "falsi" o di default nel database. Sono uno strumento essenziale durante lo sviluppo per testare l'applicazione con dati consistenti, popolare un'installazione di default o preparare un ambiente di demo.
Una fixture è una classe PHP che risiede nella cartella Fixtures del tuo modulo. Deve estendere la classe base SismaFramework\Core\BaseClasses\BaseFixture e implementare il metodo load().
Il BaseFixture astrae la logica di salvataggio e l'ordine di esecuzione attraverso due metodi principali che devi implementare:
setDependencies(): Qui dichiari se la tua fixture dipende da altre. Il framework si assicurerà di eseguire prima le dipendenze.setEntity(): Qui crei l'istanza della tua entità, imposti le sue proprietà e la registri per il salvataggio.
Vediamo come creare una fixture per un Post che dipende da una fixture per un User.
MyBlog/Application/Fixtures/UserFixture.php
namespace MyBlog\Application\Fixtures;
use SismaFramework\Core\BaseClasses\BaseFixture;
use MyBlog\Application\Entities\User;
class UserFixture extends BaseFixture
{
protected function setDependencies(): void
{
// Questa fixture non ha dipendenze
}
public function setEntity(): void
{
$user = new User();
$user->setUsername('Mario Rossi');
$user->setEmail('mario.rossi@example.com');
// Aggiunge l'entità al gestore delle fixture.
// Verrà salvata automaticamente.
$this->addEntity($user);
}
}
MyBlog/Application/Fixtures/PostFixture.php
namespace MyBlog\Application\Fixtures;
use SismaFramework\Core\BaseClasses\BaseFixture;
use MyBlog\Application\Entities\Post;
class PostFixture extends BaseFixture
{
protected function setDependencies(): void
{
// Dichiara che questa fixture ha bisogno che UserFixture sia già stata eseguita
$this->addDependency(UserFixture::class);
}
public function setEntity(): void
{
// Recupera l'entità User creata dalla sua fixture di dipendenza
$author = $this->getEntityByFixtureName(UserFixture::class);
$post = new Post();
$post->setTitle('Il mio primo articolo');
$post->setContent('Contenuto dell\'articolo...');
$post->setAuthor($author); // Associa l'autore recuperato
$this->addEntity($post);
}
}
Le fixtures si eseguono tramite il comando CLI della console:
php SismaFramework/Console/sisma fixtures
Il framework troverà ed eseguirà automaticamente tutte le classi Fixture presenti nei moduli registrati, rispettando l'ordine delle dipendenze dichiarate.
Indice | Precedente: Barra di Debug | Successivo: Gestione Errori e Logging
Se hai trovato errori o vuoi suggerire miglioramenti, apri una issue su GitHub.
Report Issue Edit on GitHub