Home Backend Development PHP Tutorial PHP透过字符串调用函数

PHP透过字符串调用函数

Jun 13, 2016 pm 12:01 PM
array echo user

PHP通过字符串调用函数

来自:http://ziming.org/archives/6695.html

?

1. call_user_func

<span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">(</span><span style="color: #000088;">$b</span><span style="color: #339933;">,</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$b</span><span style="color: #339933;">;</span>		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"111"</span><span style="color: #339933;">,</span><span style="color: #0000ff;">"222"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"333"</span><span style="color: #339933;">,</span><span style="color: #0000ff;">"444"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 111 222 333 444</span><span style="color: #000000; font-weight: bold;">?></span>?<span style="color: #666666; font-style: italic;">//调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:</span><span style="color: #000000; font-weight: bold;">class</span> a <span style="color: #009900;">{</span>		<span style="color: #000000; font-weight: bold;">function</span> b<span style="color: #009900;">(</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>				<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span>		<span style="color: #009900;">}</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"a"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"b"</span><span style="color: #009900;">)</span><span style="color: #339933;">,</span><span style="color: #0000ff;">"111"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 111</span><span style="color: #000000; font-weight: bold;">?></span>
Copy after login

2. call_user_func_array

call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:

<span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">(</span><span style="color: #000088;">$b</span><span style="color: #339933;">,</span> <span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$b</span><span style="color: #339933;">;</span>		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"111"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"222"</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 111 222</span><span style="color: #000000; font-weight: bold;">?></span>?<span style="color: #666666; font-style: italic;">//call_user_func_array函数也可以调用类内部的方法的</span>?<span style="color: #000000; font-weight: bold;">Class</span> ClassA<span style="color: #009900;">{</span>		<span style="color: #000000; font-weight: bold;">function</span> bc<span style="color: #009900;">(</span><span style="color: #000088;">$b</span><span style="color: #339933;">,</span> <span style="color: #000088;">$c</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>    		<span style="color: #000088;">$bc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$b</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span>				<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$bc</span><span style="color: #339933;">;</span>		<span style="color: #009900;">}</span><span style="color: #009900;">}</span><span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">(</span><span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'ClassA'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'bc'</span><span style="color: #009900;">)</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"111"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"222"</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>?<span style="color: #666666; font-style: italic;">//显示 333</span><span style="color: #000000; font-weight: bold;">?></span>
Copy after login

call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:

<span style="color: #000000; font-weight: bold;">function</span> a<span style="color: #009900;">(</span><span style="color: #339933;">&</span><span style="color: #000088;">$b</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>		<span style="color: #000088;">$b</span><span style="color: #339933;">++;</span><span style="color: #009900;">}</span><span style="color: #000088;">$c</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #990000;">call_user_func</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #339933;">&</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//显示 1</span><span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #339933;">&</span><span style="color: #000088;">$c</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//显示 2</span>
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Five selected Go language open source projects to take you to explore the technology world Five selected Go language open source projects to take you to explore the technology world Jan 30, 2024 am 09:08 AM

In today's era of rapid technological development, programming languages ​​are springing up like mushrooms after a rain. One of the languages ​​that has attracted much attention is the Go language, which is loved by many developers for its simplicity, efficiency, concurrency safety and other features. The Go language is known for its strong ecosystem with many excellent open source projects. This article will introduce five selected Go language open source projects and lead readers to explore the world of Go language open source projects. KubernetesKubernetes is an open source container orchestration engine for automated

Sort array using Array.Sort function in C# Sort array using Array.Sort function in C# Nov 18, 2023 am 10:37 AM

Title: Example of using the Array.Sort function to sort an array in C# Text: In C#, array is a commonly used data structure, and it is often necessary to sort the array. C# provides the Array class, which has the Sort method to conveniently sort arrays. This article will demonstrate how to use the Array.Sort function in C# to sort an array and provide specific code examples. First, we need to understand the basic usage of the Array.Sort function. Array.So

Laravel development: How to implement WebSockets communication using Laravel Echo and Pusher? Laravel development: How to implement WebSockets communication using Laravel Echo and Pusher? Jun 13, 2023 pm 05:01 PM

Laravel is a popular PHP framework that is highly scalable and efficient. It provides many powerful tools and libraries that allow developers to quickly build high-quality web applications. Among them, LaravelEcho and Pusher are two very important tools through which WebSockets communication can be easily implemented. This article will detail how to use these two tools in Laravel applications. What are WebSockets? WebSockets

Go language development essentials: 5 popular framework recommendations Go language development essentials: 5 popular framework recommendations Mar 24, 2024 pm 01:15 PM

&quot;Go Language Development Essentials: 5 Popular Framework Recommendations&quot; As a fast and efficient programming language, Go language is favored by more and more developers. In order to improve development efficiency and optimize code structure, many developers choose to use frameworks to quickly build applications. In the world of Go language, there are many excellent frameworks to choose from. This article will introduce 5 popular Go language frameworks and provide specific code examples to help readers better understand and use these frameworks. 1.GinGin is a lightweight web framework with fast

Detailed explanation of the role and usage of the echo keyword in PHP Detailed explanation of the role and usage of the echo keyword in PHP Jun 28, 2023 pm 08:12 PM

Detailed explanation of the role and usage of the echo keyword in PHP PHP is a widely used server-side scripting language, which is widely used in web development. The echo keyword is a method used to output content in PHP. This article will introduce in detail the function and use of the echo keyword. Function: The main function of the echo keyword is to output content to the browser. In web development, we need to dynamically present data to the front-end page. At this time, we can use the echo keyword to output the data to the page. e

What are the most popular golang frameworks on the market? What are the most popular golang frameworks on the market? Jun 01, 2024 pm 08:05 PM

The most popular Go frameworks at present are: Gin: lightweight, high-performance web framework, simple and easy to use. Echo: A fast, highly customizable web framework that provides high-performance routing and middleware. GorillaMux: A fast and flexible multiplexer that provides advanced routing configuration options. Fiber: A performance-optimized, high-performance web framework that handles high concurrent requests. Martini: A modular web framework with object-oriented design that provides a rich feature set.

How to use the array_combine function in PHP to combine two arrays into an associative array How to use the array_combine function in PHP to combine two arrays into an associative array Jun 26, 2023 pm 01:41 PM

In PHP, there are many powerful array functions that can make array operations more convenient and faster. When we need to combine two arrays into an associative array, we can use PHP's array_combine function to achieve this operation. This function is actually used to combine the keys of one array as the values ​​of another array into a new associative array. Next, we will explain how to use the array_combine function in PHP to combine two arrays into an associative array. Learn about array_comb

Simple and clear method to use PHP array_merge_recursive() function Simple and clear method to use PHP array_merge_recursive() function Jun 27, 2023 pm 01:48 PM

When programming in PHP, we often need to merge arrays. PHP provides the array_merge() function to complete array merging, but when the same key exists in the array, this function will overwrite the original value. In order to solve this problem, PHP also provides an array_merge_recursive() function in the language, which can merge arrays and retain the values ​​of the same keys, making the program design more flexible. array_merge

See all articles