マジック関数API_Widgets
を使用してWordPressで呼び出されるクラスを作成する際に問題が発生しました。__call
ファイルの名前をderp.php
に、クラスの名前をに変更するだけで、API_Derp
問題なく動作します。
次の例では、この問題に重要でないすべてのものが削除されています(したがって、3番目のコードブロックで指定された特定の致命的なエラー以外のエラーがある場合は、無視してください)。
またはクラスの名前を変更したり、別のクラスを呼び出したりすることは問題なく機能するため、私はcore.php
またはAPI
クラスの機能を知っていることを覚えておいてください。__call
widgets.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' );