PHP中代理函数调用的小案例

简单写一个小例子就明白了

例:在文本框内输入字符串并用逗号隔开,然后点击提交会自动消除逗号拼接在一起。

像这样

点击提交过去返回12345

这个小例子就用到代理函数调用,先说一下这个函数名 call_user_func_array();

call_user_func_array(‘要调用的函数名’,’调用的值’);

先写提交表单:

<form method=post action=”test.php”>

输入一个字符串,用逗号隔开: <input type=”text” name=”str”><br />

<input type=”submit” name=”button” value=”提交”>

</form>

再写接受验证的代码:

<?php

function content(){

$sum=func_get_args();

if(empty($sum)){

echo ‘请输入内容!’;

return;

}

$num=”;

for($i=0;$i<count($sum);$i++){

$num.=$sum[$i];

}

echo $num;

}

if(isset($_POST[‘button’])){

$str=$_POST[‘str’];

$array=explode(‘,’,$str);

call_user_func_array(‘content’,$array);

}

解释:

1. 先判断提交过来的内容,然后以’,’ 将字符串分割成一个数组($array)

2. 定义一个函数,获取传来的值并打散分成一个数组($sum),如果没有传内容就返回‘请输入内容’,然后进行一个循环,将$sum数组中的几个值打印出来并用‘.’链接

3. 因为函数是不能跨变量域调用的(就这么说吧,反正就这么理解吧,,这样说好理解,别打我QAQ),所以要用到代理函数调用(call_user_func_args())

4. 使用 call_user_func_array(‘content’,$array);  让这个函数帮我们调用一下,这句代码类似于

function content($a){

//代码块

}

content($array);

5. 这样就完成了一次函数的代理调用,通常在我们无法调用自己写的函数时使用。

6. 有什么写的不对的地方欢迎指出,反正我又不会改~QAQ~~QAQ~

时间: 2024-08-30 14:18:04

PHP中代理函数调用的小案例的相关文章

DUBBO+Zookeeper在Centos7中本地搭建及小案例

环境: 1.centos7 2.jdk-7u76-linux-x64.tar.gz 2.tomcat:apache-tomcat-7.0.59.tar.gz 3.zookeeper-3.4.6.tar.gz 4.dubbo-admin-2.5.3.war 具体的流程: 第一步:安装jdk,并且配置环境变量(*) xshell5命令: 1.解压jdk: tar xvf jdk-7u76-linux-x64.tar.gz 1 2.提取权限: chmod–R 777 /usr/local/java/j

关于js中的事件委托小案例

需求:页面上有一个按钮,和一个空的ul,要求点击按钮,会给ul中动态添加li元素,然后,点击动态添加的元素,在控制台上输出,这是第几个元素 <ul> </ul> <button>点击增加</button> var ul = document.querySelector('ul'); var btn = document.querySelector('button'); //动态添加元素 btn.addEventListener('click',functio

springdata_多表关系中的一对一__小案例

一.创建maven工程,引入依赖,设置配置文件 依赖和配置文件的设置可以参考,之前的博客<springdata__jpa> 二.创建实体类 1.customer类 package cn.dzl.jpa.entity; import javax.persistence.*; @Entity@Table(name = "cust_customer")public class Customer { //设置主键自增策略 @GeneratedValue(strategy = Gen

几个数据库的小案例(一):将文本文件中的信息导入数据库的表中

从文本文件添加到数据库用户表的记录(有两个文件:frmMain.cs  SqlHelper.cs  ) //FrmMain.cs//作者:Meusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Fo

数据库查询的一般写法:从登陆验证小案例中得到的一些启示和经验

这几天做了一个登陆验证的案例,主要功能就是:用户输入密码进行登陆,如果输错密码三次则15分钟内不能登陆. 这个案例确实不复杂,但是其中的逻辑第一次理解确实很别扭. 从这个小案例中,我得到了几个启示,并打算以后写类似的程序都执行此标准 1.该项目中,和sql有关的操作统统放到SqlHelper中 ---所有相同的操作都应该单独定义成一个助手类. 2.该项目中,使用了参数化查询有效防止了sql注入漏洞 ---所有关于查询的并且值由用户输入的sql语句,一律不准用字符串拼接 3.该项目中,判断用户是否

Vue iview中的render小案例3

当我按下play.穿梭在大街小巷没什么不对.每个人都会.只是你在束缚自己.快来做个一等一的player.要求自己不能够太普通.一定必须要去做点成就 Vue iview中的render小案例 第一个数据比较好拿是对象直接.就可以,第二个是数组所以需要遍历会麻烦些 工序一道也少不了,就像下面迟早会补齐的 每天记录一点点 { title: "场馆地址", // key: "gymnasium.name" render: (h, params) => { return

【原】谈谈对Objective-C中代理模式的误解

[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective-C中的delegate大部分用法属于委托模式.全文有些抠概念,对实际开发没有任何影响. 前段时间看到的一篇博客iOS开发——从一道题看Delegate,和这篇博客iOS APP 架构漫谈解决的问题类似.两篇blog都写得很不错,都是为了解决两个页面之间的数据传递问题: A页面中有一个UILabel

node.js(小案例)_实现学生信息增删改

一.前言 本节内容主要对小案例做一个总结: 1.如何开始搭建小项目 2.路由设计 3.模块应用 4.项目源码以及实现过程github地址: 项目演示如下: 二.主要内容 1.项目的关键性js源码: 项目的入口: /** * app.js 入门模块 * 职责: * 创建服务 * 做一些服务相关配置 * 模板引擎 * body-parser 解析表单 post 请求体 * 提供静态资源服务 * 挂载路由 * 监听端口启动服务 */ var express = require('express') v

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W