NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Je to chyba nebo vlastnost? (Instanci lze před definicí založit jen někdy)

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pavel Jelínek:2.1.2017 13:45

Ahoj,

Je následující jev chyba nebo vlastnost?

Když mně nefungoval můj program, zredukoval jsem problém na tři řádky:

$lo_comp = new CComparer;
interface IComparer { }
class CComparer implements  IComparer  { }

Tento kód ohlásí Uncaught Error "Class 'CComparer' not found" - ovšem kterýkoli z následujících fixů ten problém odstraní:

1.Vynechám slova "implements IComparer"
2.Změním IComparer z interface na třídu (ať běžnou nebo abstraktní)
3.Založím instanci až za definicí CComparer (ale nestačí ji založit mezi definicemi IComparer a CComparer).

Chová se to tak v PHP 5 i 7; zkoušel jsem to na Endora.cz Freehosting, http://sandbox.onlinephpfunctions.com/ a také na http://eval.in - všude stejné chování.

Takže - je to chyba, nebo vlastnost? Kdyby to byla zamýšlená vlastnost, pak je mně divné, že pomůže každý z výše uvedených fixů.

Díky
Pavel ( pjel (0) centrum . cz )

 
Odpovědět
2.1.2017 13:45
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Pavel Jelínek
Petr Čech:2.1.2017 16:26

Je to PHP, takže těžko říct, spoustu jeho vlastností mi připadá jako bug :D
Nicméně platí, že by ses tím vůbec neměl zaobírat a dodržovat konvence, kdy patří každá třída do svého souboru.

Nahoru Odpovědět
2.1.2017 16:26
the cake is a lie
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.