log4php を使用しているときに、Restler を使用して API を作成する際に問題が発生しています。オートローダーの衝突のようですが、確かではありません。参考までに、関連するコード セクションのみを表示してみますので、お役に立てれば幸いです。
index.php には次のものがあります。
require_once("../../config.php");
require_once("../../lib/Luracast/restler.php");
use Luracast\Restler\Restler;
$r = new Restler();
$r->addAPIClass('Messages');
$r->addAuthenticationClass('APIAuth');
$r->handle(); //serve the response
ここで、config.php はアプリの読み込みと構成です。その内部は次のとおりです。
require_once(SYS_PATH.'/lib/log4php/Logger.php');
Logger::configure(SYS_PATH.'/../resources/log4php.xml');
$syslog = Logger::getLogger('System');
これまでに構築しているメッセージ API には、次のものが含まれています。
class Messages {
function get($id) {
return MessageService::getMessage($id);
}
}
最後に、 MessageService の内部には次のものがあります。
static function getMessage($msgId) {
global $syslog;
$syslog->debug("Getting message for id $msgId");
//extraneous code removed
}
それを行って、messages/get api 関数の API にアクセスしようとすると、次のエラーが発生します。
Fatal error: Class 'LoggerLoggingEvent' not found in /path/to/lib/log4php/Logger.php on line 290
https://github.com/Luracast/Restler/issues/72を確認して見ました- これは問題がないことを示しているようですが、確信が持てないか、何か間違ったことをしているに違いありません。
うまくいけば、すべてが理にかなっていて明確です。何か不足している場合はお知らせください。Restler 3.0RC3 を使用しています。