Hoi allemaal,

Ik heb 2 OOP vragen, die enigszins met elkaar hebben te maken.

1) Loading

Als we een object hebben, bijvoorbeeld een product, dan kunnen we dat product laden met een mapper. Bijvoorbeeld:

<?php
$product_mapper = new ProductMapper();
$product = $product_mapper->load(12);
?>
Maar wat als we in plaats van één product bijvoorbeeld de 10 laatste toegevoegde producten willen tonen? Hoe werkt dat dan? Gebruiken we daar diezelfde mapper voor? Ik neem aan van niet, want we gaan niet ieder product stuk voor stuk uit de databse ophalen. Maar hoe dan wel?

2) Object in view

Stel ik heb een product ingeladen, hoe krijg ik dan de productinformatie in de view. Ik heb me ooit eens laten vertellen dat je in een view geen objecten mag gebruiken, omdat een view geen "intelligentie" mag bevatten. Dit zou volgens diegene dus niet mogen:

<?php

echo '<div id="product">' . $product->getName() . '</div>';

?>
Volgens die persoon moet je in de controller de benodigde variabelen doorsturen/beschikbaar maken in de view. Dus zoiets:

<?php
// ProductController

public function show() {
// product ophalen
$this->toView('product_name', $product->getName());
}

// view

echo '<div id="product">' . $product_name . '</div>';

?>
Zijn jullie het er mee eens dat je in de view geen objecten maar uitsluitend variabelen mag gebruiken?
>> de view praat niet terug richting de controller toch??

Dat komt omdat wij als PHP developers in de beperkte wereld van 1 richtingsverkeer werken. Deze patterns zijn allemaal UI patterns, ontworpen door mensen die computer programma's maken. Daarbij bestaat die pijl van view naar controller wel, denk maar aan het klikken op een button.
>> Daarbij bestaat die pijl van view naar controller wel, denk maar aan het klikken op een button.

Ah ja... daar had ik inderdaad niet aan gedacht. Geinig :)

Reageren