찾다
PHP의 콜백 함수Jun 28, 2018 pm 02:49 PM

* 2. 콜백을 실행하는 2가지 함수

* 팁: 콜백이란 무엇인가요?

* 직접 호출이라는 PHP 시스템에서 제공하는 함수를 호출합니다. 직접 호출이라고도 합니다.

* PHP 시스템은 사용자 정의 호출 함수, 콜백이라고도 불리는 간접 호출이라는 프록시 함수를 통해 호출해야 합니다

* 오늘 배운 call_user_func() 및 call_user_func_array()가 그러한 프록시 함수입니다

* 시스템 대신 사용자 정의 함수를 호출할 수 있습니다

* 1.call_user_func_array($callback, $array): 배열 매개변수를 사용하여 콜백 함수 실행

* 2.call_user_func($callback, $array): 첫 번째 매개변수는 콜백 함수 호출로 사용

* 참고: 1. 일반적으로 콜백에서는 매개변수를 작성할 필요가 없지만 다른 함수를 통해 매개변수를 얻습니다. 2. 매개변수는 참조로 전달될 수 없습니다

//1. 매개변수는 call_user_func()를 사용하여 하나씩 전달됩니다.

//단일 매개변수

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;;

//정적 메서드 호출: 두 가지 방법이 있습니다: 문자열과 배열

//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(콜백, 배열)

* 두 개의 매개변수만 허용합니다: 콜백, 인덱스 배열, 전달된 모든 매개변수 콜백은 인덱스 배열

* 및 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.