ugrás a tartalomhoz

Template engine funkcionális kérdés

Max Logan · 2008. Jan. 24. (Cs), 13.51
Egy template engine-t csinálok, amiben lehetőség lesz a változó hozzárendeléseknél névterek használatára. A lényege, hogy a változó hozzárendelésnél meg lehet adni egy névtér nevet és ebbe kerülnek bele a változók. Belátható, hogy így több névtérben lehet használni ugyanolyan nevű változókat. (Az egész elgondolás azon alapszik, hogy ne kelljen prefix-elni a változó neveket).

Namost a kérdés az, hogy ezt hogyan oldja meg funkcionális szempontból? Most úgy indultam el, hogy van egy use_namespace attributum, amitől függően másképpen viselkedik pl. az assign() metódus. A kérdés az, hogy legyen így vagy legyen külön metódus a ns használat esetére.

Tehát:

<?php

  # Névtér nélkül
  $tpl -> assign("var","value");

  $tpl -> display("tpl_file");


  # Névtérrel
  $tpl -> use_namespace = true;

  $tpl -> assign("ns_name","var","value");

  $tpl -> display("ns_name","tpl_file");

?>
vagy

<?php

  # Névtér nélkül
  $tpl -> assign("var","value");

  $tpl -> display("tpl_file");


  # Névtérrel
  $tpl -> ns_assign("ns_name","var","value");

  $tpl -> ns_display("ns_name","tpl_file");

?>
 
1

milenneha

winston · 2008. Jan. 24. (Cs), 14.03
mi lenne, ha
  $tpl -> assign("var","value", "ns_name");  
jellegű lenne az assign-metódusod, ahol az assign-t úgy deklarálod, hogy
assign($key, $value, $namespace = null)
így aztán vagy megad névteret, vagy nem, te meg e szerint dolgozod fel.
2

Elvben jó, de ...

Max Logan · 2008. Jan. 24. (Cs), 14.07
... lehetőség van az assign metódusnak csak tömböt átadni, ami tartalmazza a hozzárendeléseket. Ebben az esetben jön a PHP által nem egyszerűen használható változó paraméterlista probléma.

Az első esetben bonyolítja a kódot - a tömb megadhatóság miatt - a hibakezelés.

A ns_* lesz a nyerő, mert ha a ns_* függvényeket használja a rendszer, akkor a megadott névtérbe kerül a változó, ha meg a sima függvényeket, akkor a "globális" névtérbe, míg a másik megoldásnál nem lenne globális névtér. (Jobban mondva, nagyon bonyolult lenne egy-egy metódus kódja, ha lehete globális névteret használni). Ezt a virtuális globális névteret mindenhonnan el lehet érni.

Ui.: s_volenszki gondolatából kiindulva lassan igazolódik, hogy milyen ispiratív a weblabor-on való hangos gondolkodás :-)
3

func_get_args ...

sandornemeth · 2008. Jan. 25. (P), 12.47
.. segithet abban, hogy megvizsgald a parametereket, igy dinamikusan tudod valtoztatni oket, es mind a 3 esetet le tudod konnyen kezelni akar 1 fuggvenyben.
1 param: tomb
2 param: default ns-be megy a var,value paros
3 param: (ns, var, value) 3as
4

Nem rossz megközelítése, de ...

Max Logan · 2008. Jan. 25. (P), 13.06
... mi van, akkor ha ns-be kell tenni a változókat és tömbként adják át? Ekkor is két változó van, ami ugye a fentiek szerint az egy változó hozzárendelés esete a függvénynek átadott paraméterszám alapján. Még így is lekezelhető a dolog, de egy jó dagadt függvényt kapunk, ami elég sok elágazást tartalmaz.