4

「大文字と小文字を区別しないフラグ」を指定して require_once を呼び出す方法はありますか? Windows では問題ありませんが、Linux では大文字と小文字が区別されます。オーバーライドする方法はありますか? ありがとう

4

3 に答える 3

2

はい、読み込みます

strtolower($className . ".php")

小文字でファイルに名前を付けます。


ファイルをどのようにロードしようとしても、小文字バージョンのみがロードされます。

于 2013-01-05T11:25:26.263 に答える
0

header.phpまたは他の一般的なファイルのどこかに他の場所を含めるだけです。

<?php
$filename = basename($_SERVER['SCRIPT_FILENAME']);
$request = basename($_SERVER['SCRIPT_NAME']);

if($filename != $request)
  die('Case of filename and request do not match!');
?>

これはあなたの問題を解決するのに役立つと思います。次の場所も参照してくださいhttps://superuser.com/questions/431342/linux-both-case-sensitive-and-case-insensitive-and-always-inconvenient

于 2013-01-05T12:28:04.217 に答える
0

ロードするたびにこれを使用して、適切なクラスを自動ロードできます。プロジェクトによっては、ディレクトリを変更する必要があります。echo または print_r を使用して、何かを呼び出すたびにロードされるクラスを出力できます。また、クラス名はすべて同じ形式にする必要があります。たとえば、className.class.php、Dashboard.class.php、Category.class.php などです。ucwords を使用して最初の文字を大文字にすることができます。

function __autoload($className) 
{
    if (file_exists(__DIR__ . '/../library/' . strtolower($className) . '.class.php')) 
    {
        require_once(__DIR__ . '/../library/' . strtolower($className) . '.class.php');
    }
    else if (file_exists(__DIR__ . '/../application/controllers/' . strtolower($className) . '.php')) 
    {
        require_once(__DIR__ . '/../application/controllers/' . strtolower($className) . '.php');
    }
    else if (file_exists(__DIR__ . '/../application/models/' . strtolower($className) . '.php')) 
    {
        require_once(__DIR__ . '/../application/models/' . strtolower($className) . '.php');
    }
}
于 2013-01-05T11:47:43.177 に答える