web-dev-qa-db-fra.com

Comment puis-je avoir une $ default_view dynamique?

Quelque chose dans le genre de:

JLoader::Register('MyComHelperConfig', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/config.php');

class MyComController extends JControllerLegacy
{
    protected $default_view = MyComHelperConfig::getDefaultView();
}

Je suppose que cela peut impliquer l'écriture de substitutions de méthodes sur la classe de base. Quel serait le moyen le plus simple de le faire?

1
RiA

Vous ne pouvez pas définir une propriété de classe sur une valeur dynamique, telle qu'un appel de méthode, pendant la déclaration, comme vous le tentez. Voir http://php.net/manual/en/language.oop5.properties.php

Vous devez le définir dans votre constructeur.

JLoader::Register('MyComHelperConfig', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/config.php');

class MyComController extends JControllerLegacy
{
    protected $default_view = NULL;

    public function __construct($properties)
    {
        $this->default_view = MyComHelperConfig::getDefaultView();

        parent::__construct($properties);
    }
}

Pour votre information, il n'est pas nécessaire de définir explicitement la propriété sur NULL. Je le mets par habitude. Vous pouvez le laisser de côté:

    protected $default_view; // same as "protected $default_view = NULL;"
3
Drew G