Ti stai riferendo a un articolo che dice
In the Java programming language, the constant interface pattern
describes the use of an interface solely to define constants, and
having classes implement that interface in order to achieve convenient
syntactic access to those constants. However, since constants are very
often merely an implementation detail, and the interfaces implemented
by a class are part of its exported API, this practice amounts to
putting implementations details into the API, which is considered
inappropriate. In general, collecting system constants into
classes independent of behaviour, might create a poor object-oriented
design, because it is often a sign of low cohesion. It is for these
reasons that implementing constants interfaces is considered to be an
anti-pattern.
Vengo da Java e sto facendo PHP in questo momento ...
Dal mio punto di vista, finché usi costanti dell'interfaccia che sono di natura interna al sistema, stai bene ... una volta che inizi a esporre le costanti dell'interfaccia come parte dell'API esterna, devi farlo usando le classi e non le interfacce.
Un'altra cosa da considerare è la serializzazione e i pacchetti di distribuzione. Se sono necessarie costanti come parte del pacchetto di distribuzione per abilitare una deserializzazione senza errori, ricordare: È possibile aggiungere dettagli di implementazione in classi, ma non in interfacce.
Purtroppo, PHP solo sa pubblico, protetto e privato per controllare lo spazio dei nomi e per controllare l'ambito delle costanti. In Java hai il pacchetto privato in cima, che in pratica dice "nella stessa directory" / "pacchetto java de. *".
Ricorda questo quando paragona Java ad altre lingue e prendi conclusioni riguardo ai modelli di formiche che si riferiscono a OODesign in generale e attraverso le lingue. Può portare a conclusioni sbagliate ;-) ...
Non dico che l'articolo di wikipedia sia sbagliato ... ma non è corretto al 100%.
Solo i miei 2 € cent.