Io faccio questo ragionamento:
se ho queste classi:
Codice PHP:
class Img
{
private $resource;
public function __construct($path)
{
$this->resource = imagecreatefromjpeg($path);
}
}
class Img_2
{
private $resource;
public function addResource($path)
{
$this->resource = imagecreatefromjpeg($path);
}
}
e le richiamo cosi:
Codice PHP:
$img = new Img("/path/toimg.jpg");
$img2 = new Img_2();
$img2->addResource("/path/toimg.jpg");
cosa ottengo? la stessa identica cosa! (provare per credere)
Detto questo, bisogna capire che il costruttore è un cosa, e l'inizializzazione di un oggetto è un altra.
Nel primo esempio inizializzo un oggetto ($img) ed essendoci il metodo "magico" del costruttore, che viene eseguito, è obbligatorio passargli il path all'immagine.
Mentre nel secondo ($img2) c'è solo l'inizializzazione .
Per essere ancora più chiari
Codice PHP:
$img = new Img("/path"); #Inizializzazione con costruttore
$img2 = new Img2(); #Inizializzazione e basta
Quindi l'esempio che dici tu è impossibile perchè non viene inizializzato l'oggetto (operatore new).
Lo stesso discorso lo puoi fare con __destruct: se c'è vuol dire che hai delle operazioni da fare in fase di distruzione dell'oggetto, altrimenti vuol dire che non te ne frega niente.
Seguendo il tuo discorso, inizializzando un oggetto ma non distruggendolo con __destruct l'oggetto persiste, cosa sbagliata.
Spero di averti fatto capire la differenza tra costruttore e inizializzazione, altrimenti chiedi di nuovo