Autor | Zpráva | ||
---|---|---|---|
Jack06 Profil |
#1 · Zasláno: 27. 12. 2010, 13:08:22
Ahoj, jde mi o to, jak spustit nějakou protected nebo static funkci, při načtení třídy autoloadem..
Představa je takto: final public static function load($type) { if (!class_exists($type)) { throw new Exception("Není možné načíst třídu '$type'."); }else { if(function_exists('startup')) $type::startup(); if(function_exists('actionDefault')) $type::actionDefault(); if(function_exists('renderDefault')) $type::renderDefault(); } } To bohužel nefunguje, ale věřím, že na to něco existuje... Díky za pomoc |
||
AM_ Profil |
#2 · Zasláno: 27. 12. 2010, 22:04:49
tohle je metoda, kterou používáš pro autoloading? to samozřejmě fungovat nemůže, vždyť se tam tu třídu nikde nesnažíš načíst.
final public static function load($type) { require "classes/$type.class.php"; //třeba if (!class_exists($type)) { throw new Exception("Není možné načíst třídu '$type'."); ... Další problém je samozřejmě ten, že function_exists() hledá globální funkce, pro existenci metod se používá method_exists(). |
||
Jack06 Profil |
#3 · Zasláno: 27. 12. 2010, 22:24:34
ale ne mám funkci __autoload a v ní pak volám tuto statickou třídu load... Mě se třída načte v pohodě, ale jde mi o to, že v template budu mít název funkce na vyvolání widgetu {widget registrationForm}, to registrationForm budu mít například v poli $vars, kde budou další funkce, které chci spustit, ale jak spustit tu funkci, která je v proměnné??
lehkej priklad, aby bylo videt co myslim: $funkce = "startup"; ObjektovaTrida::$funkce(); |
||
Jack06 Profil |
#4 · Zasláno: 28. 12. 2010, 14:28:13
Myslím, že vyřešeno: http://cz.php.net/manual/en/function.call-user-func.php
|
||
Časová prodleva: 13 let
|
0