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というファイルがあります。

だから私の質問はここにありますaudoloaderautoloads:。\ Framework \ StringMethods.php私が呼び出すので:

$ string = Framework\StringMethods。

したがって、$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 に答える