ホームページ > バックエンド開発 > PHPチュートリアル > PHPコールバック関数の実装方法(コード)の紹介

PHPコールバック関数の実装方法(コード)の紹介

不言
リリース: 2023-04-04 10:50:01
転載
3261 人が閲覧しました

本篇文章给大家带来的内容是关于php回调函数的实现方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

名称 id 说明 选项options
回调过滤器(callback) 1024 调用自定义函数来过滤数据 callable函数或方法

回调函数实现

回调函数必须接受一个待过滤的值,并返回过滤后的值,回调函数有四种实现方式。

第一种是直接定义回调函数,并在使用过滤器函数时,将回调过滤器的options设置为自定义的回调函数。

<?php
function trimString($value){
    return trim($value);
}
$args=array(
    &#39;options&#39;=>&#39;trimString&#39;,
);
var_dump(filter_var(&#39;abc &#39;,FILTER_CALLBACK,$args));
?>
ログイン後にコピー

第二种是在使用过滤器函数时,将回调过滤器的options直接设置为回调函数。

<?php
$args=array(
    &#39;options&#39;=>function ($value){return trim($value);},
);
var_dump(filter_var(&#39;abc &#39;,FILTER_CALLBACK,$args));
?>
ログイン後にコピー

第三种是通过闭包实现调用回调函数来传递其他参数。

<?php
function trimString($array){
    return function($value = null) use ($array){
        if(key_exists(&#39;character_mask&#39;,$array)){
            return trim($value,$array[&#39;character_mask&#39;]);  
        }
        return trim($value);
    };
}
$args=array(
    &#39;options&#39;=>trimString(array("character_mask"=>&#39;a..c &#39;)),
);
var_dump(filter_var(&#39;abcd &#39;,FILTER_CALLBACK,$args));
?>
ログイン後にコピー

第四种是使用类中的函数作为回调函数,可以用来将多个过滤器回调函数集中到一起。

<?php
class TrimFilter{
    private $options=array();
    private $defaults=array(&#39;character_mask&#39;=>" \t\n\r\0\x0B");
    public function __construct(array $options=array()){
        $this->options = $options;
    }
    
    private function get_options(array $defaults){
        return array_merge($defaults, $this->options);
    }
    
    function trimString($value){
        $ops=$this->get_options($this->defaults);
        if(key_exists(&#39;character_mask&#39;,$ops)){
            return trim($value,$ops[&#39;character_mask&#39;]);  
        }
        return trim($value);
    }
    
    function ltrimString($value){
        $ops=$this->get_options($this->defaults);
        if(key_exists(&#39;character_mask&#39;,$ops)){
            return ltrim($value,$ops[&#39;character_mask&#39;]);  
        }
        return ltrim($value);
    }
    
    function rtrimString($value){
        $ops=$this->get_options($this->defaults);
        if(key_exists(&#39;character_mask&#39;,$ops)){
            return rtrim($value,$ops[&#39;character_mask&#39;]);  
        }
         return rtrim($value);
    }
    
}

$trim_args=array(
    &#39;options&#39;=>array(
        new TrimFilter(array(&#39;character_mask&#39;=>" a")),TRIMSTRING
    )
);
$ltrim_args=array(
    &#39;options&#39;=>array(
        new TrimFilter(array(&#39;character_mask&#39;=>" a")),LTRIMSTRING
    )
);
$rtrim_args=array(
    &#39;options&#39;=>array(
        new TrimFilter(),RTRIMSTRING
    )
);
$str="abcd ";
var_dump(filter_var($str,FILTER_CALLBACK,$trim_args));
var_dump(trim($str," a"));
var_dump(filter_var($str,FILTER_CALLBACK,$ltrim_args));
var_dump(ltrim($str," a"));
var_dump(filter_var($str,FILTER_CALLBACK,$rtrim_args));
var_dump(ltrim($str));
?>
ログイン後にコピー


以上がPHPコールバック関数の実装方法(コード)の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート