Ho qualche problema nel trovare una buona struttura di cartelle nel mio progetto e mi piacerebbe sapere quali altri modi posso usare per strutturare i miei file.
Attualmente sto lavorando in una cartella stoccata MVC.
www/
Controllers/
Models/
Views/
Niente di speciale finora. Ma sto anche usando un sistema ORM. Con esso posso facilmente ottenere un 'oggetto' dal mio database come:
ORM::load('table');
Ora questo tipo di codice dovrebbe risiedere in un modello giusto? Quindi mi piacerebbe avere qualcosa di simile:
<?php
class userModel
{
public function getAllUsers ( )
{
return ORM::load('table');
}
public function getUserById ( $id )
{
return ORM::load('table', 'userid=?', array($id));
}
}
?>
Sembra buono finora secondo me ... Ma c'è ancora una cosa. Posso anche specificare un 'modello' quando si utilizza il sistema ORM. Con questo modello posso fondamentalmente impostare regole di validazione. Mi piace così:
ORM::withModel('authModel');
Ciò consente all'ORM di sapere che prima di aggiungere una nuova riga (o l'aggiornamento di una esistente) al DB, dovrebbe prima controllare il seguente modello per le regole di convalida.
<?php
class authModel //Or maybe authValidation??
{
// Method gets automatically triggered when an update is done with the ORM
public function onUpdate ( $obj )
{
if ( $obj->username == '' )
throw new \Exception('No username');
}
public function onInsert ( $obj )
{
// Validations here too.
}
}
?>
Ora il problema è che ho 2 tipi di modelli. Uno in cui fondamentalmente utilizzo getter / setter per ottenere e archiviare dati nel database (dal mio controller al mio modello).
E ho un altro modello in cui sono impostate le regole di convalida ... Non voglio mescolare entrambi nella stessa cartella. Quindi devo venire con un'altra struttura per questo. Qualcosa come:
www/
Controllers/
Models/
Repositories/
Entities/
Views/
È solo che il mio modello non è un vero "repository", dal momento che non memorizza alcun oggetto nella classe repo e non ha un metodo commit () o qualcosa del genere.
Inoltre non posso memorizzare il 2 ° modello (per le convalide) nella cartella Entità, perché non sono affatto Entità ...
Qualche idea su come dovrei strutturare questo .. ??