php: popola automaticamente la variabile membro del modello dalla tabella del database

0

Sono bloccato con un vecchio sito molto vecchio che ho bisogno di fare alcune modifiche. Non riesco a utilizzare o integrare un nuovo framework MVC a causa dell'attuale sito obsoleto con alcune codifiche personalizzate eseguite molto tempo fa.

Sto scrivendo una classe di riflessione personalizzata per la tabella utente nel database, ma trovo facile lavorare sulla creazione del modello quando il parametro è passato o sulla chiave primaria e popolato le variabili membro, quindi usarle nel codice. per esempio

$user= new User($user_id);

e poi se ho bisogno dell'età posso usare

if($user->age > 18)

Per fare questo si potrebbe dire che è facile creare un metodo di costruzione e fare una selezione e assegnarli alle variabili membro .. comunque la parte difficile è

Voglio

  1. Anche il design della tabella del database è cambiato Voglio che si riflettano nella codifica senza alterare il codice, es. se aggiungiamo un nuovo campo alla tabella del database, voglio che venga chiamato usando $user->new_field; senza toccare il codice. (So che Yii può farlo ma non posso usare Yii perché devo scrivere tutte le funzionalità del sito web se devo spostarmi su un framework)

  2. se possibile assegnali alle variabili membro con il tipo di dati i.e Strings, Int ecc. li legge dal database

Come costruire una base di modelli sopra (in realtà un metodo di costruzione)?

    
posta user1179459 10.01.2013 - 05:07
fonte

2 risposte

1

Suggerimento:

Concentrati sulla scrittura di classi decenti per l'accesso ai dati. Il tempo che impiegherete a inserire alcune selezioni, inserire, aggiornare ed eliminare le query nelle definizioni di classe sarà probabilmente impercettibile in confronto al tempo che impiegherete ad automatizzarlo, per non parlare dei bug che probabilmente introdurrete.

È possibile utilizzare lo schema per generare classi in fase di runtime, ma perché? Schema e codice sono bloccati insieme come mano e guanto - non si può cambiare senza l'altro.

    
risposta data 10.01.2013 - 05:17
fonte
0
  1. Qualcosa sulla falsariga di ...

    foreach ( $db_rec as $db_field=>$db_val) {
        $this->$db_field = $db_val;
    }
    

    le classi possono creare le proprie proprietà al volo.

  2. PHP non è tipizzato rigorosamente. (Se la memoria serve, si può solo essere tipizzati come array e oggetti comunque) Ma se veramente per determinare i tipi dal database, suppongo che potresti estrarlo da DESC myTable;

    Tuttavia non sembra una buona idea.

risposta data 16.01.2013 - 07:52
fonte

Leggi altre domande sui tag