2013-02-14 4 views
2

Есть ли способ связать существующую функцию с анонимным в php? Что-то вродеСвязать анонимную функцию с существующей функцией в PHP

$my_func = strip_tags(); 

Или я должен наполовину переопределить его, как своего рода анонимной обертки, с соответствующими аргументами и возвращаемого значения?

Я пробовал использовать это в Google, но я полагаю, что я правильно не искал правильную поисковую фразу, так как я не нашел результатов на первой странице.

Редактировать Я делаю своего рода конвейер функций (?), Где я могу передавать данные и функции, и я хочу передавать функции как переменные. Я хотел бы сохранить синтаксис таким же и иметь возможность использовать $output = $function($data), не имея необходимости писать кучу анонимных оберток для собственных функций. Также я бы хотел избежать использования call_user_func, поэтому мне не нужно переписывать существующий код.

ответ

3

Simple.

$my_func = 'strip_tags'; 
$output = $my_func($data); 
+0

Это действительно так просто :) – user151841

3

Вы можете связать функцию по ее названию. Посмотрите на callable интерфейс с 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 
?> 
Смежные вопросы