2

問題はfile _ get _ contents("body.html")、と同じフォルダーにあるクラスでメソッドを使用することbody.htmlです。問題は、ファイルが見つからないというエラーが表示されることです。これは、別のクラスの私がメソッドを使用するファイルを必要としていてfile _ get _ contents("body.html")、突然 "../body/body.html" をファイルパスとして使用する必要があるためです..!

それは少し奇妙ではありませんか?メソッドを呼び出すクラスはfile _ get _ contents("body.html")と同じフォルダにありますbody.htmlが、このクラスは別の場所にある別のクラスから必要とされているため、新しいファイルパスが必要ですか?!

ディレクトリとファイルの短いリストを次に示します。

lib/main/main.php
lib/body/body.php
lib/body/body.html

これは body.php です:

class Body {

 public function getOutput(){
  return file_get_contents("body.html");
 }
}

これは main.php です:

require '../body/body.php';

class Main {

 private $title;
 private $body;

 function __construct() {

  $this->body = new Body();
 }

 public function setTitle($title) {
  $this->title = $title;
 }

 public function getOutput(){
  //prints html with the body and other stuff.. 
 }
}

$class = new Main();
$class->setTitle("Tittel");
echo $class->getOutput();

私が求めているのbody.phpは、同じフォルダーにあるエラーの修正ですが、別のクラスがメソッドの別の場所からbody.html要求するときにパスを変更する必要がありますbody.phpfile _ get _ contents("body.html")

ありがとう!

4

5 に答える 5

1

いいえ、これは奇妙ではありません。

PHP は作業ディレクトリで実行されます。これは通常、「エントリ」スクリプトが存在するディレクトリです。この作業ディレクトリは、含まれているスクリプトを実行しても変更されません。

現在実行中のファイルのディレクトリで何かを読みたい場合は、次のようなものを試してください

$path = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR."body.php";
于 2009-11-10T21:25:38.677 に答える
1

現在のファイルがどのディレクトリにあるかを知りたい場合は、 を試してくださいdirname(__FILE__)。そこから仕事ができるはずです。

于 2009-11-10T21:27:05.170 に答える