0

Wordnik の php API Fatal error: Class 'Example' not found in Swagger.php on line 212 で次のエラーが発生します。

Swagger.php を編集して機能させました。以下は元の関数です。

function swagger_autoloader($className) {
    $currentDir = substr(__FILE__, 0, strrpos(__FILE__, '/'));
    if (file_exists($currentDir . '/' . $className . '.php')) {
        include $currentDir . '/' . $className . '.php';
    } elseif (file_exists($currentDir . '/models/' . $className . '.php')) {
        include $currentDir . '/models/' . $className . '.php';
    }
}

私が変更した作業コードは

function swagger_autoloader($className) 
{
        include $currentDir . '/models/' . $className . '.php'; 
}

より詳しい情報

私のファイル構造は次のとおりです。WORDNIK (start.php を含む)>>>WORDNIK (Swagger.php を含む)>>MODELS (Example.php を含む)

  • 私はphp 5.4.3でwampserver 2.2を使用しています

更新/編集

次のコードを使用する

function swagger_autoloader($className) {
    echo "dirname(__FILE__)= ",dirname(__FILE__);
    $currentDir = substr(__FILE__, 0, strrpos(__FILE__, '/'));
    echo "currentDir=".$currentDir."</br>";
    echo "className=".$className."</br>";
    echo "__FILE__=",__FILE__."<br/>";
    die();

私は結果を得る

  • dirname(__FILE__)=D:\wamp\www\wordnik\wordnik
  • 現在のディレクトリ=
  • className=例
  • __FILE__=D:\wamp\www\wordnik\wordnik\Swagger.php

vcampitelli で提案されているように、またはいずれ__DIR__かを使用してdirname(__FILE__)動作します。

私の質問

本来の機能が働かないのはなぜ?

重要でない情報

例に苦労している人々のために、ここに私のstart.phpファイルがあります

<?php
require('./wordnik/Swagger.php');
require('./wordnik/WordApi.php');
require('./wordnik/AccountApi.php');
require('./wordnik/WordsApi.php');
require('./wordnik/WordListApi.php');
require('./wordnik/WordListsApi.php');

$myAPIKey = 'replace_this_with_your_real_api';
$client = new APIClient($myAPIKey, 'http://api.wordnik.com/v4');

$wordApi = new WordApi($client);
$example = $wordApi->getTopExample('irony');
print $example->text;
?>
4

2 に答える 2

2

何を$currentDir返しますか?__DIR__その代わりにまたはdirname(__FILE__)(それらは同じです)を使用してみましたsubstrか?

投稿したとおりに(宣言せずに$currentDir)2番目の例を使用している場合、それが元のコードの問題です$currentDir。正しいフォルダーが返されません!

元のコードでは、どのファイルが含まれていますか? 実際、誰もいないと思うからです!echoこれらのifステートメント内で使用して、それを確認してください!

于 2013-03-03T14:54:02.337 に答える
1

元の関数は UNIX スタイルのスラッシュ '/' の位置を探しているため機能しませんが、Windows ではバックスラッシュ '\' があります。それはバグです!あなたと同じように dirname( FILE ) を使用するように lib を修正します。エラーを指摘してくれてありがとう。

于 2013-03-06T08:41:39.337 に答える