Include/Require nefunguje
- scientific
- Člen | 94
Ve formuláři mám formulář, ke kterém se snažím dát captchu po vzoru druhého (staršího) Nette webu.
public function success(Form $form, $values)
{
require_once(dirname(__FILE__)."/../../www/securimage/securimage.php");
$securimage = new Securimage();
Snažím se inicializovat třídu, ale Nette tvrdí, že ta třída v Nette neexistuje (Class ‚App\Forms\Securimage‘ not found search►), což je fakt, ale to nikdo netvrdí. Ta třída existuje právě v require_once(dirname(__FILE__).„/../../www/securimage/securimage.php“);
Jak to prosím zařídit, ideálně co nejjednodušeji, je to externí třída mimo Nette, není důvod ji cpát za každou cenu do nette, dělat z ní model apod.
Editoval scientific (3. 10. 2022 10:10)
- Marek Bartoš
- Nette Blogger | 1280
A jaký má ta třída namespace? Vypadá to, že jen načítáš soubor s ní, ale už ji neimportuješ (přes use)
- Petr Parolek
- Člen | 455
Ahoj, doporučoval bych PHP kod načítat moderně přes composer z adresáře např. /libs a nepoužívat include či require.
- scientific
- Člen | 94
Pepino napsal(a):
Tipuju stačí lomítko před název třídy:
$securimage = new \Securimage();
Perfektní, funguje perfektně, děkuji.
Ale proč tomu tak je? Jak to zpětné lomítku funguje, jakou na pozadí plní úlohu, jak se tomu říká, abych si k tomu mohl dohledat nějaké informace? Děkuji.
- Martin Dřímal
- Člen | 20
scientific napsal(a):
Pepino napsal(a):
Tipuju stačí lomítko před název třídy:
$securimage = new \Securimage();
Perfektní, funguje perfektně, děkuji.
Ale proč tomu tak je? Jak to zpětné lomítku funguje, jakou na pozadí plní úlohu, jak se tomu říká, abych si k tomu mohl dohledat nějaké informace? Děkuji.
Máš tam Nějaký\Namespace a v něm includuješ třídu, která
namespace nemá, takže new Securimage
se hledá v tom lokálním
pod Nějaký\Namespace\Securimage
a new \SecurImage
se
hledá globálně / v „rootu“ namespace. Namespaces si můžeš představit
jako složku, prostě jsi tu třídu hledal ve „složce“, ve které
není.
https://www.php.net/…mespaces.php
Editoval Martin Dřímal (3. 10. 2022 12:01)