Autor Zpráva
Jack06
Profil
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
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
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
Myslím, že vyřešeno: http://cz.php.net/manual/en/function.call-user-func.php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0