php 函数调用的几种方式

<?php
	// 最常见的函数调用 --- 1
	function userFunction1($param1, $param2){
		echo 'UserFunction1: Param1 : ',$param1,' , Param2 : ',$param2,'<br/>';
	}
	userFunction1('Hello','world');

	// 最常见的函数调用 --- 2
	$userFunction2 = function($param1, $param2){
		echo 'UserFunction2: Param1 : ',$param1,' , Param2 : ',$param2,'<br/>';
	};
	$userFunction2('Hello', 'PHP');

	// 作为回调函数的函数调用 --- 1
	function funcWithCallback1($callback, $param1, $param2){
		echo 'funcWithCallback1 : ';
		if(is_callable($callback)) $callback($param1, $param2);
	}
	funcWithCallback1($userFunction2,'Hello','world');

	// 作为回调函数的函数调用 --- 2 call_user_func
	function funcWithCallback2($callback, $param1, $param2){
		echo 'funcWithCallback2 : ';
		if(is_callable($callback)) call_user_func($callback, $param1, $param2);
	}
	funcWithCallback2($userFunction2,'Hello','world');

	// 一个函数调用示例: 以 用户注册,修改密码为例
	$function_pool = array(
		'regist' => array(
			'validateUsername' => function($username){
				return (strtolower($username) !== 'admin') ? true : false;
			},
			'addUser' => function($username, $password){
				$user[$username] = $password;
				echo 'Add user Ok';
				return $user;
			}
		),
		'updatePass' => array(
			'validatePassword' => function($username, $password, $user){
				return (is_array($user) && array_key_exists($username, $user) && $user[$username] == $password);
			},
			'setPassword' => function($username, $password, $user){
				$user[$username] = $password;
				return $user;
			}
		)
	);

	function regist($function_pool, $username, $password){
		if(isset($function_pool) && isset($function_pool['regist'])){
			if(isset($function_pool['regist']['validateUsername']) && $function_pool['regist']['validateUsername']($username)){
				return $function_pool['regist']['addUser']($username, $password);
			}else{
				return 'User exists or Uniligel ';
			}
		}
	}
	$user = regist($function_pool, 'Guojunzhou', 'sanyue');
	echo '<pre>';
	print_r($user);
	echo '</pre>';

	function updatePass($function_pool, $username, $password, $newPass, $user){
		if(isset($function_pool) && isset($function_pool['updatePass'])){
			if(isset($function_pool['updatePass']['validatePassword']) && $function_pool['updatePass']['validatePassword']($username, $password, $user)){
				return $function_pool['updatePass']['setPassword']($username, $newPass, $user);
			}
		}
	}
	$user = updatePass($function_pool, 'Guojunzhou', 'sanyue', '123456', $user);
	echo '<pre>';
	print_r($user);
	echo '</pre>';
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值