検索

* 2. コールバックを実行する 2 つの関数

* ヒント: コールバックとは何ですか?

* PHP システムによって提供される呼び出し関数は、ダイレクト コールと呼ばれ、ダイレクト コールとも呼ばれます。呼び出し

* PHP システムがユーザー定義関数を呼び出すときは、プロキシ関数を通じて呼び出す必要があります。これは間接呼び出しと呼ばれ、コールバックとも呼ばれます

* これは、今日は call_user_func() と call_user_func_array() について学びました プロキシ関数

# * システムの代わりにカスタム関数を呼び出すことができます

# * 1.call_user_func_array($callback, $array): 配列を使用しますコールバック関数を実行するためのパラメータ

* 2.call_user_func($callback, $array): 最初のパラメータはコールバック関数として使用されます call

* 注: 1. 通常は必要ありませんコールバックにパラメータを書き込みますが、他の関数を通じてパラメータを取得します。 2. パラメータの参照渡しは許可されません。

//1。call_user_func()

# を使用してパラメータを 1 つずつ渡します。 ##//単一パラメータ

echo call_user_func(function(){
    //如果匿名回调没写参数,可以通过func_get_args()获取
    return '欢迎来到'.func_get_arg(0);
},'php中文网');
echo &#39;<hr>&#39;;
echo call_user_func(function($site){
    return &#39;欢迎来到&#39;.$site;
},&#39;php中文网&#39;);
echo &#39;<hr>&#39;;

//複数のパラメータ、実際のパラメータ量 コールバック パラメータの数は一貫している必要があり、超過は無視されます

echo call_user_func(function($site,$course){
    return &#39;欢迎来到&#39;.$site.&#39;学习&#39;.$course.&#39;课程&#39;;
},&#39;php中文网&#39;,&#39;php&#39;);
echo &#39;<hr>&#39;;
//支持调用类中的方法做为回调
class Demo1
{
    //普通方法
    public function sum($a, $b)
    {
        return $a+$b;
    }
}
class Demo2
{
    //静态方法
    public static function multi($a,$b)
    {
        return $a*$b;
    }
}

//通常のメソッドを呼び出します。コールバックは配列として渡す必要があります: [オブジェクト, 'メソッド名']

$obj = new Demo1;
echo call_user_func([$obj,&#39;sum&#39;],10,15);

//php5 .4 以降、省略可能:

echo call_user_func([(new Demo1()),&#39;sum&#39;],10,15);
echo &#39;<hr>&#39;;

//静的メソッドを呼び出します:方法は 2 つあります: string と array

//String: 'クラス名::メソッド名'

echo call_user_func(&#39;Demo2::multi&#39;,10,15);

//Array: [クラス名, 'メソッド名']

echo &#39;<hr>&#39;;
echo call_user_func([&#39;Demo2&#39;,&#39;multi&#39;],20,5);

//名前空間がある場合は、クラス名の前に名前空間文字列を追加するか、定数 __NAMESPACE__ を使用します。

//call_user_func() を理解すると、call_user_func_array() は非常に単純で、パラメータのみです。は異なります

* 2.call_user_func_array(callback, array)

* 2 つのパラメータのみを受け入れます: コールバック、インデックス配列、コールバックに渡されるパラメータはすべてインデックス配列にパックされます

* call_user_func(array,arg1...) との唯一の違いは、パラメーターを渡す方法が異なることです

* コールバックは、文字列関数名、クラス名、配列、匿名関数もサポートします

echo &#39;<hr>&#39;;
echo call_user_func_array(function(){
    //查看传递给回调的参数
//    return print_r(func_get_args(),true);
    
    $msg = &#39;前端开发的基础知识包括:&#39;;
    //遍历参数数组
    foreach (func_get_args() as $value) {
        $msg .= $value.&#39;,&#39;;
    }
    //去掉未尾逗号,并替换成感叹号
    return rtrim($msg,&#39;,&#39;).&#39;!&#39;;
    
}, [&#39;html&#39;,&#39;css&#39;,&#39;javascript&#39;]);
echo &#39;<hr>&#39;;
class Demo3
{
    public function func1()
    {
        return __METHOD__.&#39;<pre class="brush:php;toolbar:false">&#39;.print_r(func_get_args(),true).&#39;
';     } } class Demo4  {     public static function func2()     {         return __METHOD__.'
'.print_r(func_get_args(),true).'
';     } }

//コールバック クラスのメソッド

echo call_user_func_array([(new Demo3),&#39;func1&#39;], [&#39;php&#39;,&#39;java&#39;,&#39;c&#39;]);

//静的メソッドを呼び出すためのコールバック:

//1。配列パラメーター メソッド

echo call_user_func_array([&#39;Demo4&#39;,&#39;func2&#39;], [&#39;html&#39;,&#39;css&#39;,&#39;jQuery&#39;]);

//2 を使用します。文字列パラメーター メソッドを使用します。

echo call_user_func_array(&#39;Demo4::func2&#39;, [&#39;html&#39;,&#39;css&#39;,&#39;jQuery&#39;]);

//名前空間がある場合は、クラス名の前に名前空間を追加するだけです。または __NAMESPACE__ を使用することもできます。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php函数返回值可以有几个php函数返回值可以有几个Apr 26, 2022 pm 08:14 PM

php函数返回值只能有一个。在PHP中,函数返回值使用return语句定义,语法“return 返回值;”。return语句只能返回一个参数,即函数只能有一个返回值;如果要返回多个值的话,就需在函数中定义一个数组,将返回值存储在数组中返回。

php传参都是字符串吗php传参都是字符串吗Dec 15, 2022 pm 03:07 PM

不是,php传参可以是字符串、数字、布尔值、数组等。从PHP5.6版本开始支持传递数组参数,函数的形式参数可使用“…”来表示函数可接受一个可变数量的参数,而可变参数将会被当作一个数组传递给函数,语法“function 函数名(...$arr){//执行代码}”。

php函数的参数赋值有哪几种php函数的参数赋值有哪几种Apr 24, 2022 pm 12:10 PM

php函数的参数赋值有3种:1、值传递赋值,将实参的值复制一份再赋值给函数的形参;2、引用传递赋值,把实参的内存地址复制一份,然后传递给函数的形参,进而将实参值赋值给形参;3、直接给函数的参数指定默认值,语法“函数名(参数变量='值')”。

PHP函数的命名规范及规则PHP函数的命名规范及规则May 19, 2023 am 08:14 AM

PHP作为一种非常流行的脚本语言,有着强大的函数库支持,其函数的命名规范和规则对于开发效率和代码可读性都有着重要的影响。本文将介绍PHP函数的命名规范及规则。一、命名风格在PHP中,函数名需要严格符合命名规范和规则,规范主要包括两个方面:命名风格和命名规则。1.下划线命名法下划线命名法是PHP函数命名最常用的方式,也是官方推荐的一种方式。遵循这种方式的函数名

详细介绍PHP函数和方法的区别详细介绍PHP函数和方法的区别Mar 24, 2023 am 09:45 AM

随着互联网技术的发展,PHP已经成为了非常流行的开发语言之一。身为一个PHP开发者,了解PHP函数和方法的区别是非常重要的,因为它们在编写代码的时候都是必不可少的。在本文中,我们将详细介绍PHP函数和方法的区别。

PHP函数的迭代器函数PHP函数的迭代器函数May 19, 2023 am 08:11 AM

随着现代编程语言的不断发展,编程的效率和功能性也不断提高,其中PHP作为一种广泛使用的服务器端脚本语言,也在不断地更新和完善其自身的功能列表。PHP函数的迭代器函数就是其中的一种新功能,为PHP程序员提供了更加灵活和高效的编程方式。在本文中,我们将详细介绍PHP函数的迭代器函数的相关知识。什么是PHP函数的迭代器函数?在介绍PHP函数的迭代器函数之前,我们首

php函数中true表示什么?怎么用?php函数中true表示什么?怎么用?Mar 23, 2023 am 11:07 AM

PHP是一种流行的服务器端编程语言,它拥有许多功能强大的函数和方法。在PHP函数中,true表示什么意思,这是一个非常基础的问题,但它却是非常重要的。在本文中,我们将详细探讨php函数中true的意思及其使用方法。

php中递归函数是啥意思php中递归函数是啥意思May 31, 2022 pm 12:01 PM

在php中,递归函数指的是自调用函数,也就是函数在函数体内部直接或间接地自己调用自己;使用递归函数时,需要在函数体中附加一个判断条件,以判断是否需要继续执行递归调用,当条件满足时会终止函数的递归调用。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境