-
php函数重载的替代方法--伪重载详解
对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。而弱类型本来就不区分,所以无法通过这些来实现,但是,可以通过下面的方法来实现简单的
- <? php
- //函数重载的替代方法-伪重载
- //
- //确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数
- //在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?
- function testOne ( $a ) {
- echo (' 一个参数就这样 ');
- }
- function testTwo ( $a , $b ){
- echo (' 两个参数的就这样 ');
- }
- function testThree ($a, $b, $c ) {
- echo (' 黑黑,这是三个参数的 ');
- }
- function test () {
- $argNum = func_num_args ();
- // 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
- for ( $i = 0 ; $i < $argNum ; $i ++ ) {
- $_arg_ { $i } = func_get_arg ( $i );
- }
- switch ( $argNum ) {
- case 1 :
- testOne( $_arg_1 );
- break ;
- case 2 :
- testTwo( $_arg_1, $_arg_2 );
- break ;
- case 3 :
- testThree( $_arg_1, $_arg_2, $_arg_3 );
- break ;
- default :
- echo ( ' 这是没有参数的情况 ' );
- break ;
- }
- }
- test();
- echo ( ' ' );
- test( 1 );
- echo ( ' ' );
- test( 1 , 2 );
- echo ( ' ' );
- test( 1 , 2 , 3 );
- // 这些只是在函数中的运用,其实最主要的还是在类中的运用
- //如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?
- class test {
- var $a = 0 ;
- var $b = 0 ;
- function test () {
- $argNum = func_num_args ();
- $_arg = func_get_args ();
- switch ($argNum ) {
- case 1 :
- $this -> test1( $_arg [ 0 ] );
- break ;
- case 2 :
- $this -> test2( $_arg [ 0 ] , $_arg [ 1 ]);
- break ;
- default :
- $this -> a = 0 ;
- $this -> b = 1 ;
- break ;
- }
- }
- function test1 ($a) {
- $this -> a = $a ;
- }
- function test2 ($a, $b) {
- $this -> a = $a ;
- $this -> b = $b ;
- }
- }
- ?>
伪重载吧。
函数重载的替代方法-伪重载,下面看一个具体的实例代码。
出处:http://www.phpfensi.com/php/20210525/15811.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式