Een vraagje. Stel we hebben deze code:

<?php
class A {

private $foo;

public function __construct($foo) {
$this->foo = $foo;
$b = new B($this->foo);
}

}

class B {

private $foo;

public function __construct($foo) {
$this->foo = $foo;
}

}

$array = array('foo' => 'foo', 'bar' => 'bar');

// SITUATIE 1:
$a = new A($array);

// SITUATIE 2:
$object = (object) $array;
$a = new A($object );

?>
Klopt het dat in situatie 1 zowel class A als class B een eigen afzonderlijke "kopie" (property) opslaan van $array?

En klopt het dat er in situatie 2 slechts 1 versie van $array is (het object), en dat de class-properties in class A en B slechts pointers zijn naar $array (het object)?
Ozzie PHP op 31/10/2013 20:14:04

>> En waarom doe je die methode van jouw dan? Wat is daar het voordeel van?


Onafhankelijkheid
Frank, reageer je op mij nu of op Wouter? Wouter stelde die vraag namelijk.
Hij was voor jou bedoeld Ozzie.

Wouter gaat weleens wat snel voor ons maar als je goed naar zijn argumenten kijkt dan weet je waarom hij eerst een request object maakt. Onafhankelijkheid. Zijn code is dus in diverse gevallen (her)bruikbaar.

Overigens dacht ik ook dat Wouter het meende met die "User" array. begreep het al niet helemaal LOL
Oké, maar in welk opzicht is het voorbeeld van Wouter dan meer onafhankelijk dan dat van mij? volgens mij komt het toch op hetzelfde neer? Even heeel kort door de bocht...

Wat wouter doet is dit:

$request = new Request ($_COOKIE, $_FILES, enz.);
$kernel = new Kernel($request);

en wat ik doe:

$kernel = new Kernel($_COOKIE, $_FILES, enz.);

We geven dus allebei van buitenaf de request-data door aan de kernel. We doen volgens mij precies hetzelfde. Alleen ik maak het request-object aan in de kernel, en Wouter erbuiten. Maar we gebruiken precies dezelfde data. Ik vind het mooier om het request-object door de kernel class te laten maken zodat je geen extra "handelingen" hoeft te doen voordat je de kernel class aanroept. Het enige wat je hoeft te doen is de request-data in de kernel gooien, en de kernel regelt de rest. Dus nu ben ik benieuwd waarom Wouter's versie volgens jou onafhankelijker is dan de mijne.

Reageren