Phalcon Initialize() ne fonctionne pas
-
26-12-2019 - |
Question
J'ai 2 contrôleurs, TEST1Controller
et TEST2Controller
Dans TEST2Controller
j'ai un initialize()
valeur de réglage de fonction d’une propriété.
Si j'essaie d'accéder TEST2Controller
directement depuis le navigateur, tout fonctionne parfaitement.
Mais quand j'appelle un TEST2Controller
méthode de TEST1Controller
, Il paraît que initialize()
la fonction n'est pas appelée TEST2Controller
.
TEST1Controller
:
namespace Modcont\Controller;
use Modcont\Controller\Test2Controller;
class Test1Controller extends BaseController
{
function gettestAction()
{
$t = new Test2Controller(); // calling TEST2 Controller Method Within TEST1 Controller
echo $t->dotestAction(" MYAPP ");
}
}
TEST2Controller
:
namespace Modcont\Controller;
class Test2Controller extends BaseController
{
public $prefix;
function initialize()
{
$this->prefix = 'your name is';
}
function dotestAction($name)
{
return $this->prefix.' : '.$name;
}
}
La solution
Phalcon propose deux méthodes d'initialisation du contrôleur. initialize
et onContruct
méthodes.La différence fondamentale entre ces deux méthodes est que initialize
est appelé seulement lorsqu'un contrôleur est créé par le framework pour procéder à l'exécution d'une action.Depuis que vous instanciez un objet contrôleur ad hoc, initialize
ne sera pas appelé, seulement onConstruct
volonté.Vous devrez donc y mettre votre logique d'initialisation :
function onConstruct()
{
$this->prefix = 'your name is';
}
De plus, l'implémentation de constructeurs natifs dans le contrôleur est déconseillée, mais si vous le faites, assurez-vous d'appeler le constructeur parent dans votre propre constructeur : parent::__construct();
.
Toutes ces informations peuvent être trouvées dans les documents.