J'ai une classe qui fonctionne comme un wrapper pour Smarty mais que je veux utiliser statiquement à travers mon application.Une classe statique peut-elle étendre une classe non statique et accéder à ses méthodes?
Ma configuration ressemble à ceci:
class Template extends Smarty {
public function __constructor() {
parent::__constructor();
}
public function setSettings() {
$this-> some smarty settings here
}
public static function loadTpl($tpl) {
self::$tplFile = $tpl;
// other logic
self::setSettings(); // this won't get executed because it uses non static method calls.
}
}
Comment puis-je contourner cela?
Une méthode statique ne peut appeler des méthodes statiques. Il n'y a pas moyen de contourner cela. Quand vous arrivez à 'setSettings', qu'est-ce que vous attendez de' $ this'? Il n'y a pas d'objet associé. –
Pourquoi voulez-vous qu'il soit appelé statiquement? Au lieu de cela, vous pouvez créer un objet Smarty singleton. –
Eli, pourriez-vous s'il vous plaît jeter un oeil: http://stackoverflow.com/questions/12436203/assigning-defaults-for-smarty-using-object-oriented-style –