namespace – z nějakého důvodu nevidím na funkce

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vnovotny
Člen | 12
+
0
-

Dobré odpoledne,

potřeboval bych trochu nakopnout v namespace. Zkouším pochopit, jak funguje auto-loading vlastních knihoven, a tak jsem si napsal asi toto:

<?php
namespace knihovna\level1;

class test_objekt {
    static function staticka_funkce()
    {
        return "123456789";
    }
}
function funkce()
{
    return "abcdefgh";
}

?>

To potom volám v presenteru:

<?php
class TestPresenter extends BasePresenter
{

	public function renderDefault()
	{
                $this->template->tmp = knihovna\level1\test_objekt::staticka_funkce();
                $this->template->tmp = knihovna\level1\funkce();

	}

}

Když to nechám takhle, tak se mi proměnná TMP naplní „abcd…“, když ale zakomentuji první řádek, tak mi to hodí exception:

Call to undefined function knihovna\level1\funkce()

V čem je chyba?

ViPEr*CZ*
Člen | 817
+
0
-

Nooo zkusil bych ten namespace uzavřít do závorek tedaaa:

<?php
namespace knihovna\level1 {

 class test_objekt {
    static function staticka_funkce()
    {
        return "123456789";
    }
 }
 function funkce()
 {
    return "abcdefgh";
 }

}
?>

Editoval ViPEr*CZ* (18. 10. 2011 13:28)

voda
Člen | 561
+
0
-

Problém bude s načítám souborů. Při zavolání statické metody třídy se zjistí, že třída není nahraná, slovo dostane RobotLoader a soubor i s funkcí načte. Ve druhém případě se ale nic nenačítá, takže funkce neexistuje a skončí to chybou.

vnovotny
Člen | 12
+
0
-

OK. Díky. Já se stejně domnívám, že není celkem důvod používat funkce když máme statické metody, jenomže každý „namespace tutorial“ to demonstruje, tak jsem to taky zkusil… :-)

voda
Člen | 561
+
0
-

Statické metody jsou zlo, takže je nejlépe nepoužívej vůbec.

Editoval voda (18. 10. 2011 14:35)

22
Člen | 1478
+
0
-

@voda: ehm, co je špatné na statické metodě? V Nette jich je plno btw. Nespletl sis to se statickou třídou?

Editoval 22 (18. 10. 2011 14:01)

voda
Člen | 561
+
0
-

@22: jo, to jsem měl na mysli.