PHP:u自动加载函数不';我从没打过电话
所以,我有xampp。我在ZendServer上测试了这段代码,结果相同PHP:u自动加载函数不';我从没打过电话,php,xampp,autoload,Php,Xampp,Autoload,所以,我有xampp。我在ZendServer上测试了这段代码,结果相同 <?php error_reporting(E_ALL); define ("ABS_PATH", 'C:\xampp\htdocs\oopHotLine\\'); function __autoload($class_name) { echo 'gg'; require_once (ABS_PATH.'classes\\'.$class_name.'.php'); } $process=new
<?php
error_reporting(E_ALL);
define ("ABS_PATH", 'C:\xampp\htdocs\oopHotLine\\');
function __autoload($class_name) {
echo 'gg';
require_once (ABS_PATH.'classes\\'.$class_name.'.php');
}
$process=new Main('1');
?>
因此,它不显示“gg”输出。如果我手动执行自动加载('Main');-好的。本手册要求一次或包含一次。windows文件夹中的所有权限都设置为完全访问权限。Php版本-Php版本=>5.3.8
请提供帮助。有关此主题的注释,可能与以下内容相关:
根据记录的第一条消息判断,这可能是答案:
如果在CLI交互模式下使用PHP,则自动加载不可用
……而且:
spl_autoload_register()为自动加载类提供了更灵活的选择。因此,不鼓励使用_autoload(),将来可能会被弃用或删除
除此之外,以下是我如何编写您的自动加载函数:
function __autoload($class_name) {
if (file_exists(ABS_PATH."classes/$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 portable
require_once (ABS_PATH."classes/$class_name.php");
}
}
正如达维兰多姆所指出的:
Autoloading is not available if using PHP in CLI interactive mode.
因此,不要使用php.exe-a index.php
,而是将-a
切掉,尝试使用php.exe index.php
运行脚本。
如果您的代码有一个现有的自动加载函数,则此函数
必须在自动加载堆栈上显式注册。这是因为
spl_autoload_register()将有效地替换
通过spl_autoload()或
spl_自动加载_调用()
您确定调用了该文件吗?当您使用spl\u autoload\u寄存器加载如下自定义函数时,它是否工作?是的,我非常确定,而且,即使不工作,在出现错误之前,它是否应该首先显示“gg”?使用spl\u autoload\u寄存器的自定义加载程序具有相同的输出
给出相同的输出,很抱歉设置格式。@NiPh我真的认为这与有关,如果在CLI交互模式下使用PHP,自动加载将不可用。
…感谢您的帮助和有关未来自动加载弃用的信息。
Autoloading is not available if using PHP in CLI interactive mode.