Maison développement back-end tutoriel php Introduction à la méthode d'implémentation de la fonction de rappel php (code)

Introduction à la méthode d'implémentation de la fonction de rappel php (code)

Oct 25, 2018 pm 04:37 PM
filter

本篇文章给大家带来的内容是关于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));
?>
Copier après la connexion

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

<?php
$args=array(
    &#39;options&#39;=>function ($value){return trim($value);},
);
var_dump(filter_var(&#39;abc &#39;,FILTER_CALLBACK,$args));
?>
Copier après la connexion

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

<?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));
?>
Copier après la connexion

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

<?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));
?>
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre l'erreur « [Vue warn] : échec de la résolution du filtre » Comment résoudre l'erreur « [Vue warn] : échec de la résolution du filtre » Aug 19, 2023 pm 03:33 PM

Méthodes pour résoudre l'erreur "[Vuewarn]:Failedtoresolvefilter" Lors du processus de développement utilisant Vue, nous rencontrons parfois un message d'erreur : "[Vuewarn]:Failedtoresolvefilter". Ce message d'erreur se produit généralement lorsque nous utilisons un filtre non défini dans le modèle. Cet article explique comment résoudre cette erreur et donne des exemples de code correspondants. Quand on est dans Vue

Quel est le principe et la méthode d'enregistrement du filtre dans Springboot Quel est le principe et la méthode d'enregistrement du filtre dans Springboot May 11, 2023 pm 08:28 PM

1. Filtre Regardez d'abord l'emplacement du filtre du serveur Web. Le filtre est une chaîne connectée avant et après. Une fois le traitement précédent terminé, il est transmis au filtre suivant pour traitement. 1.1Définition de l'interface de filtre publicinterfaceFilter{//Méthode d'initialisation, exécutée une seule fois dans tout le cycle de vie. //Les services de filtrage ne peuvent pas être fournis tant que la méthode init n'est pas exécutée avec succès (échec tel que le lancement d'une exception, etc.). //Le paramètre FilterConfig permet d'obtenir le paramètre d'initialisation publicvoidinit(FilterConfigfilterConfig)throwsServletException;//

Comment intégrer le filtre dans SpringBoot2 Comment intégrer le filtre dans SpringBoot2 May 16, 2023 pm 02:46 PM

Définissez d’abord un filtre pour l’interception d’URL d’accès unifié. Le code est le suivant : publicclassUrlFilterimplementsFilter{privateLoggerlog=LoggerFactory.getLogger(UrlFilter.class);@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{H

Comment filtrer en Java Comment filtrer en Java Apr 18, 2023 pm 11:04 PM

Remarque 1. Si le paramètre Lambda génère une valeur vraie, le filtre (Lambda pouvant générer un résultat booléen) générera un élément ; 2. Lorsque false est généré, cet élément ne sera plus utilisé. Exemple pour créer une collection List : ListstringCollection=newArrayList();stringCollection.add("ddd2");stringCollection.add("aaa2");stringCollection.add("bbb1");stringC

Analyse des propriétés visuelles CSS : box-shadow, text-shadow et filtre Analyse des propriétés visuelles CSS : box-shadow, text-shadow et filtre Oct 20, 2023 pm 12:51 PM

Analyse des propriétés visuelles CSS : box-shadow, text-shadow et filter Introduction : Dans la conception et le développement Web, CSS peut être utilisé pour ajouter divers effets visuels aux éléments. Cet article se concentrera sur les trois propriétés importantes de box-shadow, text-shadow et filter en CSS, y compris leur utilisation et l'affichage des effets. Ci-dessous, nous analysons ces trois attributs en détail. 1. boîte-ombre (ombre de boîte) boîte-shado

Explication détaillée des propriétés de flou CSS : filtre et toile de fond-filtre Explication détaillée des propriétés de flou CSS : filtre et toile de fond-filtre Oct 20, 2023 pm 04:48 PM

Explication détaillée des propriétés floues CSS : filter et background-filter Introduction : Lors de la conception de pages Web, nous avons souvent besoin d'effets spéciaux pour augmenter l'attrait visuel de la page. L'effet de flou est l'un des effets spéciaux courants. CSS fournit deux attributs de flou : filter et background-filter, qui sont utilisés respectivement pour flouter le contenu de l'élément et le contenu de l'arrière-plan. Cet article explique ces deux propriétés en détail et fournit quelques exemples de code concrets. 1. filtre

Classe facultative dans Java 8 : Comment filtrer les valeurs éventuellement nulles à l'aide de la méthode filter() Classe facultative dans Java 8 : Comment filtrer les valeurs éventuellement nulles à l'aide de la méthode filter() Aug 01, 2023 pm 05:27 PM

Classe facultative en Java8 : Comment utiliser la méthode filter() pour filtrer les valeurs éventuellement nulles En Java8, la classe facultative est un outil très utile qui nous permet de mieux gérer les valeurs éventuellement nulles et d'éviter l'apparition de NullPointerException. La classe Optionnel fournit de nombreuses méthodes pour manipuler les valeurs nulles potentielles, l'une des méthodes importantes est filter(). La fonction de la méthode filter() est que si Option

Comment utiliser des filtres pour formater et traiter les données dans Vue Comment utiliser des filtres pour formater et traiter les données dans Vue Oct 15, 2023 pm 03:50 PM

Utilisez des filtres pour formater et traiter les données dans Vue Dans Vue, nous pouvons formater et traiter les données à l'aide de filtres. Le filtre est une fonction qui peut être appelée directement dans le modèle. Elle peut traiter les données à afficher et renvoyer les résultats traités. Dans cet article, nous présenterons comment utiliser des filtres pour formater et traiter les données, et fournirons des exemples de code spécifiques. Enregistrer le filtre Dans l'instance Vue, nous devons d'abord enregistrer un filtre afin qu'il puisse être utilisé dans le modèle

See all articles