MVC o meno in MVC
La prima cosa che dovrei notare è che È impossibile scrivere MVC classico in PHP . In effetti, i framework PHP simili a MVC come CodeIgniter o Yii implementano una specie di MVP in cui:
- la vista è passiva e inconsapevole del modello
- il presentatore (controller) cambia lo stato del modello, legge le informazioni e le passa alla visualizzazione
Crediti a tereško
Approccio CodeIgniter
Tuttavia, in particolare in CodeIgniter, hai 3 passaggi:
- Crea un Modello per interrogare il database e restituire i dati (come array o oggetto)
- Crea un controllore per caricare e recupera il risultato dal Modello (un metodo del Modello) e passare i dati restituiti alla vista
- Crea una Vista e usa i loop PHP per fare eco al risultato, costruisci l'HTML.
Ritrovarsi tutti insieme
Considerando l'approccio di cui sopra, devi recuperare il risultato dal database nel tuo modello:
applicazione/modelli/prodotto.php
class Product extends CI_Model
{
public function get_product($product_id)
{
$this->db->select('*')->from('products');
$this->db->where('product_id', $product_id);
$this->db->join('versions', 'versions.product_id = products.product_id');
$query=$this->db->get();
return $query->first_row('array');
}
}
Quindi recupera e passa il risultato all'interno del Controller:
applicazione/controller/prodotti.php
class Products extends CI_Controller
{
public function view($product_id)
{
$this->load->model('product');
// Fetch the result from the database
$data['product'] = $this->product->get_product($product_id);
// Pass the result to the view
$this->load->view('product_view', $data);
}
}
Infine, utilizza i dati restituiti nella vista, per generare l'elenco:
applicazione/viste/product_view.php
// Use $product to display the product.
print_r($product);