0

所以这是我的代码:

<?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 = 框架\字符串方法。

所以 $file 变量实际上是= FrameWork\StringMethods。而我所做的是在末尾添加 .php 和开头的 .\ 。

但是 Framework\StringMethods 在 Linus 系统中会如何表现呢?目录分隔符不是Linux中的“/”吗?

所以它会尝试包括:./Framework\StringMethods.php

如果正确,如何更好地编码?

4

1 回答 1

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;
于 2013-01-19T20:40:44.130 回答