0

私の問題は、一般的な絶対パスとパスです。ホスト固有の問題かもしれないので、これは 000webhost と書いたので、ここにあります。

他のホストと同様に、このホストpublic_htmlのルートにはフォルダーがあります。そのフォルダに画像、CSS、JSファイルを入れました。また、 と がありindex.phpますinstall.php。アプリの残りの部分は、public_html (../public_html)というディレクトリの上にありappます。の値を持つ定数を作成constant.phpしたルートに を作成しました。その定数を使用してクラスをロードしますが、機能しません。ABSOLUTE_PATHdirname(__FILE__) . '/app/'spl_autoload_register()

さて、何か間違ったことをしたと思うかもしれませんが、 が呼び出される前に、ディレクトリにspl_autoloadあるクラスをロードする必要があります。また、ディレクトリにもあるものをロードすると、両方とも正常に動作します。Autoload.phpapp/libs/User.phpapp/libs

それで、私の質問は、 がandで動作しているのに、 のABSOLUTE_PATH中で動作していないのはなぜですか。これがディレクトリツリーです...Autoload.phpUser.phpspl_autoload_register

root
    --- app
        --- libs
            - Autoload.php
            - User.php
    --- public_html
        -index.php
        -install.php
    - constants.php

それだけです。繰り返す。install.php では、このパスで Autoload.php をロードすると機能します

ABSOLUTE_PATH . libs/Autoload.php
ABSOLUTE_PATH . libs/User.php

しかし、Autoload.php 内では、このようなものは機能しません

ABSOLUTE_PATH . libs/Bootstrap.php

これはもう 1 つの「パス」の質問であり、多くの人が見たがらないことはわかっていますが、3 日間解決しようとしてきましたが、解決しないとアプリケーションを進めることができません。

すべての回答を事前にありがとう

Autoload編集:クラスを投稿する必要はないと思っていましたが、ここにあります...

class Autoload
{

    public function classAutoloader($class) {
        $container = '';
        $delim = explode('_', $class);

        $file =  ABSOLUTE_PATH . implode('/', $delim) . '.php';

        if(!is_readable($file)) {
            return false;
        }

        include_once $file;
    }
}

このコード行

$delim = explode('_', $class);

これは、クラスの完全な名前がLibs_Bootstrap文字列を に分割するため ABSOLUTE_PATH/libs/Bootstrap.phpです。絶対パス定数はconstants.php、ルートにある で作成されることに注意してください。

4

1 に答える 1