私の問題は、一般的な絶対パスとパスです。ホスト固有の問題かもしれないので、これは 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、ルートにある で作成されることに注意してください。