This question is about PSR-0 autoloaded libraries
Penso che tu stia confondendo due diversi problemi. Trovare e caricare il codice PHP per FooClass
è (o dovrebbe essere) un problema diverso da come dovrebbe comportarsi new FooClass()
o FooClass::staticThing()
.
Idealmente, FooClass
non dovrebbe prendersi cura se io (il tizio che usa la libreria) fa affidamento su un autoloader o se ho hardcoded la mia istruzione require_once()
.
library configuration PHP constants
Prima regola di terra ... mai con costanti da define()
. Inquinare lo spazio dei nomi globale è una cattiva idea, e IIRC anche le nuove funzionalità dei namespace sono un po 'strane a riguardo. Le costanti di classe sulle classi della libreria sono accettabili, ma come consumatore-libreria probabilmente non le modifichi manualmente.
From your point of view (lib/framework developer), where/how should be declared your library configuration PHP constants
Vuoi dire, come preferirei che il codice utente impostasse le opzioni che influiscono sul mio codice? Preferirei qualcosa del tipo:
FooLibraryConfigurator::set("a","b");
FooClass::doStuffThatNeededConfData();
In altre parole, configura la mia libreria in base a un meccanismo che ho creato per te. : P