前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 PHP 中自定义 function_alias 函数为函数创建别名

在 PHP 中自定义 function_alias 函数为函数创建别名

作者头像
Denis
发布2023-04-13 10:00:58
1.8K0
发布2023-04-13 10:00:58
举报
文章被收录于专栏:WordPress果酱WordPress果酱

我们知道 PHP 有一个为类创建一个别名的函数:class_alias,比如我们有个类名字是 WPJAM_Items,我们希望使用 WPJAM_Item 的时候效果一致,可以使用下面的代码为类 WPJAM_Items 创建一个别名 WPJAM_Item

代码语言:javascript
复制
class_alias('WPJAM_Items', 'WPJAM_Item');

但是 PHP 就没有可以为函数创建一个别名的函数,比如我之前创建了一个函数 wpjam_is_mobile 来判断当前用户的设备是不是移动设备,但是后面发现 WordPress 已经通过 wp_is_mobile 函数实现了该方法。

于是我把自己写的函数直接通过 WordPress 的函数实现:

代码语言:javascript
复制
function wpjam_is_mobile(){
	return wp_is_mobile();
}

这样感觉上略显繁琐,没有创建别名的方式简洁,那么我们就自己创建一个 function_alias 函数,实现为函数创建别名:

代码语言:javascript
复制
function function_alias($original, $alias){
	if(!function_exists($original) || function_exists($alias)){
		return false;
	}

	eval('function '.$alias.'(...$args){
		return call_user_func(\''.$original.'\', ...$args);
	}');

	return true;
}

如果担心 PHP 后续版本升级也实现了该方法,加多一个 function_exists 的判断:

代码语言:javascript
复制
if(!function_exists('function_alias')){
	function function_alias($original, $alias){
		if(!function_exists($original) || function_exists($alias)){
			return false;
		}

		eval('function '.$alias.'(...$args){
			return call_user_func(\''.$original.'\', ...$args);
		}');

		return true;
	}
}

那么上面的别名就可以通过下面的代码实现了:

代码语言:javascript
复制
function_alias('wp_is_mobile', 'wpjam_is_mobile');

WPJAM Basic 最新版已经集成了该函数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档