allora, per tutti ... l'anomalia è questa (mannaggia a me e al toString)
codice:
define('pippo', 123);
class pippo{
}
fine ... non capisco come sia possibile definire una costante ... ed usare lo stesso nome della costante per nominare una classe.
Questo è assolutamente ambiguo, perchè se si pensa alla reflection, alle pubbliche statiche, alle funzioni di definizionetipo, eccetera, si capisce quanto sia ovvio che nessun altro linguaggio permetta un'ambiguità di questo tipo.
cos'è pippo ... una costante o una classe? in uno switch voi cosa cerchereste di sapere, se è defined('pippo') o class_exists('pippo') ? .... chi viene prima e chi dopo ? Quale senso ha una sbavatura logica, per filippo a parte, di questo tipo?
Poi magari sono io che non sono di larghe vedute, ma oltre ambiguità, non è che questa è una feature in più e vorrei sapere chi al mondo utilizza quotidianamente questa ambiguità.
Anzi, uno che l'ha fato lo conosco, ecco perchè ho aperto il 3D ... è talmente furbo che infatti il codice era:
codice:
if(!class_exists('pippo')){
define('pippo', '1');
class pippo{
}
}
perchè poi non usava poi il class_exists altrove ... no, ci piantava un bel if pippo == '1' sopprimendo i notice ... ma come diavolo si fa a programmare in questo modo?