私の問題は、一般的な絶対パスとパスです。ホスト固有の問題かもしれないので、これは 000webhost と書いたので、ここにあります。
他のホストと同様に、このホストpublic_html
のルートにはフォルダーがあります。そのフォルダに画像、CSS、JSファイルを入れました。また、 と がありindex.php
ますinstall.php
。アプリの残りの部分は、public_html
(../public_html)
というディレクトリの上にありapp
ます。の値を持つ定数を作成constant.php
したルートに を作成しました。その定数を使用してクラスをロードしますが、機能しません。ABSOLUTE_PATH
dirname(__FILE__) . '/app/'
spl_autoload_register()
さて、何か間違ったことをしたと思うかもしれませんが、 が呼び出される前に、ディレクトリにspl_autoload
あるクラスをロードする必要があります。また、ディレクトリにもあるものをロードすると、両方とも正常に動作します。Autoload.php
app/libs/
User.php
app/libs
それで、私の質問は、 がandで動作しているのに、 のABSOLUTE_PATH
中で動作していないのはなぜですか。これがディレクトリツリーです...Autoload.php
User.php
spl_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
、ルートにある で作成されることに注意してください。