2

PHPで既存の関数を匿名の関数にバインドする方法はありますか?何かのようなもの

$my_func = strip_tags();

または、適切な引数と戻り値を使用して、一種の匿名ラッパーとして半分再定義する必要がありますか?

これをグーグルで検索してみましたが、最初のページに結果が見つからなかったため、適切な検索フレーズを正しく推測できなかったと思います。

編集データと関数を渡すことができる一種の関数パイプライン(?)を作成していて、関数を変数として渡したいと思っています。構文を同じに保ち、$output = $function($data)ネイティブ関数の匿名ラッピングを作成せずに使用できるようにしたいと思います。また、使用を避けたいcall_user_funcので、既存のコードを書き直す必要はありません。

4

2 に答える 2

3

関数はその名前でバインドできます。PHPから呼び出し可能なインターフェースを見てください

上記のマニュアルのコード

<?php 

// An example callback function
function my_callback_function() {
    echo 'hello world!';
}

// An example callback method
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function'); 

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod')); 

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A
?> 
于 2013-02-14T22:47:59.170 に答える
3

単純。

$my_func = 'strip_tags';
$output = $my_func($data);
于 2013-02-15T01:50:51.560 に答える