php 回调函数 this,php回调函数的实现方法介绍(代码)

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

回调过滤器(callback)1024调用自定义函数来过滤数据callable函数或方法

回调函数实现

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

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

function trimString($value){

return trim($value);

}

$args=array(

'options'=>'trimString',

);

var_dump(filter_var('abc ',FILTER_CALLBACK,$args));

?>

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

$args=array(

'options'=>function ($value){return trim($value);},

);

var_dump(filter_var('abc ',FILTER_CALLBACK,$args));

?>

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

function trimString($array){

return function($value = null) use ($array){

if(key_exists('character_mask',$array)){

return trim($value,$array['character_mask']);

}

return trim($value);

};

}

$args=array(

'options'=>trimString(array("character_mask"=>'a..c ')),

);

var_dump(filter_var('abcd ',FILTER_CALLBACK,$args));

?>

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

class TrimFilter{

private $options=array();

private $defaults=array('character_mask'=>" \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('character_mask',$ops)){

return trim($value,$ops['character_mask']);

}

return trim($value);

}

function ltrimString($value){

$ops=$this->get_options($this->defaults);

if(key_exists('character_mask',$ops)){

return ltrim($value,$ops['character_mask']);

}

return ltrim($value);

}

function rtrimString($value){

$ops=$this->get_options($this->defaults);

if(key_exists('character_mask',$ops)){

return rtrim($value,$ops['character_mask']);

}

return rtrim($value);

}

}

$trim_args=array(

'options'=>array(

new TrimFilter(array('character_mask'=>" a")),TRIMSTRING

)

);

$ltrim_args=array(

'options'=>array(

new TrimFilter(array('character_mask'=>" a")),LTRIMSTRING

)

);

$rtrim_args=array(

'options'=>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));

?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值