2

次のような抽象基本クラスの一部があります。

abstract class Fragment_Cache {

    static $in_callback = false;

    abstract public function callback( $name, $args );
}

メソッドの実行中にフリップ$in_callbackする必要があります。これは、キャッシュのネストを防ぐためにコードの他の部分で使用されます (したがって、ウィジェットとメニューをキャッシュしたいが、ウィジェット内のメニューはキャッシュしたくない)。truecallback()

ただし、これは抽象メソッドであるため、サブクラスの実装に依存することはできません。

また、メソッド呼び出しの周りでフラグのオン/オフを切り替えることもできません。これは、ページの読み込み中ではなく、非同期で実行する別のライブラリによって渡されて実行されるためです。

このコーナーから抜け出すにはどうすれば自分自身を構築できますか? :)

その呼び出しを設定する実際の怪物:

$output = tlc_transient( 'fragment-cache-' . $this->type . '-' . $name . $salt )
            ->updates_with( array( $this, 'callback' ), array( $name, $args ) )
            ->expires_in( $this->timeout )->get();
4

2 に答える 2

2
abstract class Fragment_Cache {

    static $in_callback = false;

    public function callback( $name, $args ){
        self::$in_callback = true;
        $ret = $this->__doCallback($name, $args);
        self::$in_callback = false;
        return $ret;
    }

    abstract protected function __doCallback($name, $args);
}
于 2013-06-05T21:28:23.617 に答える