Poradi nacitanych trait v presenteru

Rafe
Člen | 9
+
0
-

Ahoj,

Da se nekde ovlivnit poradi nacitanych trait?
Mam v presenteru takto definovane traity:

use LoginRequiredTrait;
use LocaleTrait;
use BaseLayoutTrait;
use LoggerTrait;

Nicmene presenter mi stale nacita „BaseLayoutTrait“ hned jako prvni:

0 =>
file => "/var/www/intranet/app/traits/Layout/BaseLayoutTrait.php"
line => 36
variables => array ()
parameters => ""
1 =>
file => "/var/www/intranet/app/traits/Extensions/LocaleTrait.php"
line => 33
variables => array ()
parameters => ""
2 =>
file => "/var/www/intranet/app/traits/Extensions/LoggerTrait.php"
line => 27
variables => array ()
parameters => ""
3 =>
file => "/var/www/intranet/app/traits/Events/LoginRequiredTrait.php"
line => 27
variables => array ()
parameters => ""

V BaseLayout nicmene pouzivam tridu User, pricemz jestli je uzivatel prihlasen se prave hlida pres LoginRequired. Takze pri soucasnem nastaveni, pokud uzivatel neni prihlasen, vyskoci chyba getUser() ⇒ null. Obe traity se injectuji do $this->onStartup[];

Predem diky za rady, pripadne za pokopnuti k jinemu reseni tohoto problemu :)

Gappa
Nette Blogger | 198
+
0
-

Nepodařilo se mi to dohledat v dokumentaci, ale podle kódu výše se traity načítají abecedně.

Rafe
Člen | 9
+
+1
-

Gappa napsal(a):

Nepodařilo se mi to dohledat v dokumentaci, ale podle kódu výše se traity načítají abecedně.

Omlouvam se, mohl jsem napsat ze jsem to zkousel:

0 =>
file => "/var/www/intranet/app/traits/Layout/ZBaseLayoutTrait.php"
line => 36
variables => array ()
parameters => ""
1 =>
file => "/var/www/intranet/app/traits/Extensions/LocaleTrait.php"
line => 33
variables => array ()
parameters => ""
2 =>
file => "/var/www/intranet/app/traits/Extensions/LoggerTrait.php"
line => 27
variables => array ()
parameters => ""
3 =>
file => "/var/www/intranet/app/traits/Events/LoginRequiredTrait.php"
line => 27
variables => array ()
parameters => ""

Vzhledem k tomu ze „BaseLayout“ vyzaduje „LoginRequired“, nejjednodussi bude asi LoginRequired uplne zrusit a mergnout to v nejaky „LoggedInBaseLayout“.

EDIT:
Tak to je skutecne abecedne, nicmene ne podle nazvu souboru (ktery je v dumpu onStartup). Stacilo prejmenovat injectMethodu a uz to slape.

Editoval Rafe (29. 5. 2019 11:32)