所以这是我的代码:
<?php
function __autoload($className) {
$paths = explode(PATH_SEPARATOR, get_include_path());
$file = $className . '.php';
foreach ($paths as $path) {
$combined = $path . DIRECTORY_SEPARATOR . $file;
if (file_exists($combined)) {
echo $combined;
include($combined);
return;
}
}
}
$string = 'Koray';
$string = Framework\StringMethods::_normalize($string);
echo $string;
?>
上述文件名为index.php。 在Framework目录下的文件夹中有一个名为StringMethods.php的文件。
所以我的问题是在这里audoloader autoloads:。\ Framework \ StringMethods.php因为我打电话:
$ string = Framework \ StringMethods。
所以$ file变量实际上是= FrameWork \ StringMethods。而我所做的就是在开头添加.php。\ /开头。
但是Framework \ StringMethods在Linus系统中的表现如何?不是目录分隔符:Linux中的“/”?
所以它会尝试包含:./ Framework \ StringMethods.php
如果正确,如何编码更好?
答案 0 :(得分:2)
你能试试下面的代码吗?注意文件夹/文件名,因为unix区分大小写。
define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR);
function __autoload($className) {
$path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
$file = ROOT_PATH . $path . '.php';
if (is_file($file)) {
require_once($file);
}
}
$string = 'Koray';
$string = \Framework\StringMethods::_normalize($string);
echo $string;