Estendere classi PHP
-
01-10-2019 - |
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 {}
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 __constructor
s 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