PHP: la function __autoload non ha mai chiamato

Quindi, ho xampp. Ho testato questo codice su ZendServer, risultato lo stesso.

<?php error_reporting(E_ALL); define ("ABS_PATH", 'C:\xampp\htdocs\oopHotLine\\'); function __autoload($class_name) { echo 'gg'; require_once (ABS_PATH.'classs\\'.$class_name.'.php'); } $process=new Main('1'); ?> 

dopo php.exe -a index.php ho questo:

 Interactive mode enabled Fatal error: Class 'Main' not found in C:\xampp\htdocs\oopHotLine\index.php on line 10 [Finished] 

quindi, non mostra l'output 'gg'. Se eseguo manualmente __autoload ('Main'); – tutto ok. Lo stesso per il manuale require_once o include. Tutte le autorizzazioni nella cartella Windows sono impostate su accesso completo. Versione PHP – Versione PHP => 5.3.8;

Per favore aiuto.

Come DaveRandom ha indicato:

 Autoloading is not available if using PHP in CLI interactive mode. 

Quindi, invece di usare php.exe -a index.php , taglia -a off e prova a eseguire lo script con php.exe index.php .

Note del manuale PHP su questo argomento, che potrebbero essere rilevanti:

A giudicare dal primo messaggio registrato, questa è probabilmente la risposta:

L'autoloading non è disponibile se si utilizza PHP in modalità intertriggers CLI.

…ma anche:

spl_autoload_register () fornisce un'alternativa più flessibile per il caricamento automatico delle classi. Per questo motivo, l'utilizzo di __autoload () è sconsigliato e potrebbe essere deprecato o rimosso in futuro.

A parte questo, ecco come scriverò la tua function autoload:

 function __autoload($class_name) { if (file_exists(ABS_PATH."classs/$class_name.php")) { // At least check the file exists before you require it! // Forward slashes work on Windows too (in PHP at least)... and they make it more portble require_once (ABS_PATH."classs/$class_name.php"); } } 

http://www.php.net/manual/en/function.spl-autoload-register.php

Se il tuo codice ha una function __autoload esistente, questa function deve essere esplicitamente registrata nello stack __autoload. Questo perché spl_autoload_register () sostituirà efficacemente la cache del motore per la function __autoload con spl_autoload () o spl_autoload_call ().