0

マジック関数API_Widgetsを使用してWordPressで呼び出されるクラスを作成する際に問題が発生しました。__callファイルの名前をderp.phpに、クラスの名前をに変更するだけで、API_Derp問題なく動作します。

次の例では、この問題に重要でないすべてのものが削除されています(したがって、3番目のコードブロックで指定された特定の致命的なエラー以外のエラーがある場合は、無視してください)。

またはクラスの名前を変更したり、別のクラスを呼び出したりすることは問題なく機能するため、私はcore.phpまたはAPIクラスの機能を知っていることを覚えておいてください。__callwidgets.php

core.php:

class API {

    function __call( $method, $args ) {

        $rmethod = "API_{$method}";
        if ( !class_exists( $rmethod ) ) {

            $lmethod = strtolower( $method );
            require_once( "{$lmethod}.php" );

        }

        return new $rmethod( $args );

    }

}

widgets.php:

class API_Widgets {

    private $widgets = array();

    function Add( $widgets ) {

        if ( is_array( $widgets ) ) {

            foreach ( $widgets as $widget ) {

                if ( !in_array( $widget, $this->widgets ) )
                    $this->widgets[] = $widget;

            }

        } else
            $this->widgets[] = $widgets;

    }

}

api.php:

$api = new API();
$widgets = $api->Widgets(); // Fatal error: Class 'API_Widgets' not found in /home4/goldencr/public_html/wp-content/plugins/minecraft-api/api/core.php on line 25
//$widgets->Add( 'some_widget' );
4

1 に答える 1

1

コメントからの拡張:

あなたの質問をほのめかしていませんが、実際にはを含めていないようですwidgets.php。絶対パスを使用してそれを修正してみてください。

require_once( __DIR__.DIRECTORY_SEPARATOR.$lmethod.".php" );
于 2013-02-14T03:12:53.580 に答える