0

MVC フレームワークで問題が発生しています。loadModel()メインコントローラー内の私のメソッドは次のとおりです。

public function loadModel($name) {
$path = 'models/' . $name . '_Model.php';

    if (file_exists($path)) {
        require $path;  
        $modelName = $name . '_Model';
        $this->model = new $modelName;
    }
}

ご覧のとおり、コントローラーをロードしようとすると、same name + _model.php..

wamp や xampp を使用している場合は問題ありませんが、Web サイトにアップロードすると"Undefined property"、すべてのモデルで表示されます。つまり、モデルがロードされていません。そこに問題があることはわかっています...

サーバーの php.ini ファイルのエラーのようなものですか? それとも、PHP のバージョンが異なるためでしょうか。

4

3 に答える 3

2

Windows では大文字と小文字が区別されません。つまり、Windows に関する限り、Model.php と model.php は同じです。ただし、unix/linux では (あなたのウェブサイト サーバーがそうであると仮定しています)、ファイル システムで大文字と小文字が区別されます。

基本的に、ファイル名を確認してください。ロードしようとして$name_Model.phpも、ファイル$name_model.phpをアップロードすると失敗する場合があります。

于 2012-07-19T13:08:41.767 に答える
1

すべての問題を解決するautoloadingの使用を検討したい場合があります。

于 2012-07-19T13:09:01.753 に答える
1

相対パスに依存しないでください。現在のディレクトリに依存します。

次のような絶対パスを作成します(ニーズに合わせてください):

$path = __DIR__ . '/models/' . $name . '_Model.php';

そのようなものがローカルで機能するようになった場合、サーバーでも機能するはずです。

ところで、_Model サフィックスの理由がわかりません。models/Car.php で十分ではないでしょうか?

于 2012-07-19T13:09:31.470 に答える