Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Petr 16. 03. 2015, 23:06:40

Název: Objasnění chyby v php
Přispěvatel: Petr 16. 03. 2015, 23:06:40
Zdravím, může mi prosím někdo objasni tuto chybu ? Používám namespace a use. Nevím co přesně už existuje.
Fatal error: Cannot declare class ctrl\Home because the name is already in use in /var/www...
Ví prosím někdo? Dík
Název: Re:Objasnění chyby v php
Přispěvatel: James_Scott 16. 03. 2015, 23:37:52
No tak hláška ti píše, že nemůžeš znovu deklarovat (vytvářet) třídu ctrl\Home, která již existuje. Takže buď použiješ stejný NS (use ctrl;) a dáš třídě jiný název nebo si tu třídu vytvoříš v jiném NS ( namespace novyNS;) .
Název: Re:Objasnění chyby v php
Přispěvatel: Petr 16. 03. 2015, 23:50:05
Díky za pomoc, jenže problém je v tom, že žádná taková třída neexistuje, respektivně existuje stejný název třídy ale v jiném namespace a use je taky jiný. Proto to nechápu.
Název: Re:Objasnění chyby v php
Přispěvatel: j 17. 03. 2015, 00:08:04
Mozna bys nejlip udelal, kdybys napastoval prislusnej kus kodu. To vis, kristal je nedostatkovej, a obycejny sklo nic moc.
Název: Re:Objasnění chyby v php
Přispěvatel: Sten 17. 03. 2015, 00:43:21
Díky za pomoc, jenže problém je v tom, že žádná taková třída neexistuje, respektivně existuje stejný název třídy ale v jiném namespace a use je taky jiný. Proto to nechápu.

PHP si ale myslí opak. Nepoužíváte náhodou include místo include_once, resp. require místo require_once, takže se ten PHP skript s danou třídou někde includuje víckrát?
Název: Re:Objasnění chyby v php
Přispěvatel: Petr 17. 03. 2015, 07:45:03
Používám v autoloaderu require ...
Název: Re:Objasnění chyby v php
Přispěvatel: Hmmm 17. 03. 2015, 10:47:12
Používám v autoloaderu require ...
Tak moze byt chyba tam. Pouzite require_once.
Název: Re:Objasnění chyby v php
Přispěvatel: Kit 17. 03. 2015, 11:16:37
Používám v autoloaderu require ...
Tak moze byt chyba tam. Pouzite require_once.

V autoloaderu se require_once nepoužívá. Není k tomu důvod.
Název: Re:Objasnění chyby v php
Přispěvatel: 3ugeene 17. 03. 2015, 11:34:46
je dost mozny, ze tam pouzivas nejakou namespace a zaroven se tu samou v tom jednom souboru snazis dedit:


namespace Foo;
use \Bar\Test;

class Test
    extends \Bar\Section {

}



pak by to melo byt takhle:

namespace Foo;

class Section
    extends \Bar\Test {
}
Název: Re:Objasnění chyby v php
Přispěvatel: 3ugeene 17. 03. 2015, 11:36:26
v prvnim pripade ma byt misto section samozrejme Test



tohle forum je fakt nakikot ohledne editaci
Název: Re:Objasnění chyby v php
Přispěvatel: Hmmm 17. 03. 2015, 12:16:21
Používám v autoloaderu require ...
Tak moze byt chyba tam. Pouzite require_once.

V autoloaderu se require_once nepoužívá. Není k tomu důvod.
V dobrom autoloaderi sa to nepouziva. Nie kazdy autoloader je dobry.