$form = new AppForm; vs $form = new AppForm();
- nanuqcz
- Člen | 822
Ahoj,
píšu si takhle komponentu s formulářem a najednou zjistím že mi nefunguje
:-) dlouho mi trvalo, než jsem přišel na to, co bylo špatně.
Můžete mi nějak osvětlit, proč tento kód funguje:
$form = new AppForm;
a tento ne?
$form = new AppForm();
Ono vůbec ten první je divný, vypadá jakobych se snažil vytvořit instanci konstanty (která by se tím pádem měla jmenovat APP_FORM, podle coding standardů). Proto mě taky zarazilo, že druhý způsob hází chybu. Jsem zmaten :-)
Předem děkuji za vysvětlení.
- nanuqcz
- Člen | 822
Nechápu to, teď mi to doopravdy funguje oběma způsoby…
Ale mám další související nejasnost. Snažím se teď udělat si
přehled ve struktuře namespace v Nette a tak s tím trochu experimentuju.
Když se třída AppForm
nachází v namespace Nette\Application,
pak by mělo stačit napsat use Nette\Application;
a následně jen
zavolat $form = new AppForm();
, což nefunguje. Mám vyzkoušené,
že když si vytvořím MujNamespace\mojeFunkce(), tak pak stačí napsat
use MujNamespace;
mojeFunkce();
takže pro funkce to funguje, nechápu proč ne i pro třídy… to jen tak bokem :-)
- cmelis
- Člen | 26
sodae napsal(a):
pokud použíješ
use Nette\Application;
musíš zavolat třídu jakoApplication\AppForm
popřípadě použij
use Nette\Application\AppForm;
Existuje v PHP něco jako v Javě operátor hvězdička, který naincluduje všechny třídy v balíku (vím, že v PHP se to asi tak nejmenuje) ale aby nebylo potřeba vypisovat každou třídu zvlášť?
Tedy například místo:
use Nette\Application\AppForm;
use Nette\Application\Control;
Například:
use Nette\Application\*; //vím, že toto nefunguje