1

この投稿のアドバイスに従ってください:wordpressのプラグインとしてのphpクラス

他のプラグインで使用するヘルパークラスを作成しました。クラスファイルには、次のようにクラスをアクティブ化するための宣言があります。

function test_init() {

    $test = new Test();

} // End of test_init()

次のような操作を行うことで、このクラスの関数にアクセスできます。

Test::my_function();

ただし、このクラス内の関数を相互に参照する際に問題が発生します。例えば:

function my_function() {

    Test::other_func();

}

このような場合、「関数名は文字列である必要があります」というエラーメッセージが表示されます。

$ this-> other_funcを試しましたが、「Class_Using_The_Test_Classに関数「other_func」がありません」というエラーが返されます。

self :: other_funcを試しましたが、「関数名は文字列である必要があります」というエラーが返されます。

call_user_func()を使用してみたところ、「call_user_func()はパラメーター1が有効なコールバックであると想定しています」というメッセージが表示されます。

このクラス内で別の関数を呼び出すにはどうすればよいですか?

4

1 に答える 1

1

実際にクラスをアクティブ化する必要はありません。例を挙げましょう。

このコードが住んでいるとしましょうhelper-class.php

<?php

class Helper_Class {

    // Note: those are double underscores before the word 'construct'.
    function __construct() {

        // initialize/call things here.
        $this->init(); // this is how you call class functions.
    }

    function init() {
        // do some monkey-business

        return;
    }

    // we'll call this function from our other class.
    function some_function() {
        // do the fancy whizbang.
    }
}

?>

これで、他のクラスファイルに次のようなものを含めることができます。

<?php

// give ourselves access to the helper class.
require_once 'helper-class.php';

class Main_Class {

    // Note: those are double underscores before the word 'construct'.
    function __construct() {
        $this->init();
    }

    function init() {
        // classes can't be used until an object of that class is created.
        $helper_class_object = new Helper_Class;

        // now I can call functions in my helper class.
        $helper_class_object->some_function();

        return;
    }

}

?>

これがあなたの状況に少し光を当てることを願っています。さらに詳しい説明が必要かどうか尋ねてください。:)

于 2012-11-16T02:00:52.610 に答える