Domanda

Ho due classi che lavoro separato da un altro, ma si estendono alla stessa classe. E 'possibile farli lavorare la stessa istanza della classe estesa. Ho voglia il costruttore della classe estesa per essere eseguito solo una volta.

So che questo non è giusto, ma qualcosa di simile:

<?php
$oApp = new app;
class a extends $oApp {}
class b extends $oApp {}
È stato utile?

Soluzione

Ah, in questo caso credo che si vorrebbe far passare la classe come parametro per le altre due classi:

/**
 * 
 */
class abParent{
    /**
     * @var app
     */
    protected $app;
    /**
     *
     * @param app $app
     */
    public function __construct(app &$app){
        $this->app = &$app;
    }
}

class a extends abParent{}
class b extends abParent{}


$app = new app();
$a = new a($app);
$b = new b($app);

var_dump($a, $b);

Altri suggerimenti

Quello che vuoi è questo:

<?php
$oApp = new app;
class a extends app{}
class b extends app{}

Se hai __constructors nelle classi dei bambini, assicurarsi che essi chiamano parent::__constructor, altrimenti probabilmente non funzionerà correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top