"require_once" e "include_once" sono generalmente un po 'più lenti che richiedono solo "require" e "include" perché eseguono un controllo se il file è già stato caricato in precedenza.
Ma la differenza è importante solo in applicazioni molto complesse in cui è necessario eseguire il caricamento automatico in ogni caso e ciò non richiederebbe require_once/include_once, se il caricatore automatico è ben codificato.
Nella maggior parte delle applicazioni semplici, è preferibile utilizzare require_once/include_once per motivi di praticità.
L'approccio della protezione intestazione è solo un codice disordinato che dovrebbe essere evitato. Immagina, se hai dimenticato il controllo in uno dei tanti file. Il debugging potrebbe essere un incubo.
Basta usare l'autoloading se l'applicazione è adatta. È veloce e il modo più comodo e pulito.
Si tratta di un collo di bottiglia nelle prestazioni del codice? –