轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
猜你喜欢
查看: 7588|回复: 1
打印 上一主题 下一主题

php中多个构造函数的问题解决办法

[复制链接]

0

主题

0

帖子

1万

积分

钻石会员

Rank: 8Rank: 8

积分
17424
QQ
跳转到指定楼层
楼主
发表于 2020-3-17 00:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要实现一个构造函数是两个变量,另一个构造函数是一个数组。
如:

public function construct($id, $dname)
public function construct($device=array())

在网上只搜到了,通过func_num_args判断参数个数实现,有通过判断类型实现的方法么?

在一个文件中不可能同时存在两个相同名字的方法函数
2.如果在不同文件中 可以用的方式实现相同函数的调用(php版本要 5.3.0 以上)
所以你的判断没有实在意义啊

php不能重载滴,把参数改成数组 在函数内区别吧

我想看看源代码它们是以什么形式并存的,继承?

gettype -- 获取变量的类型

construct 不是 php 类的构造函数
construct 才是!

虽然 php 不支持重载,但楼主也并没有说是在一个类中的同名方法

自己在构造函数construct中判断下参数类型,然后再走不同的分支就行了。不原生支持重载就模拟个嘛~

php 不向C一样不能支持函数重载,就像你说的通过func_num_arg函数然后判断参数来分支初始化嘛

可以在construct中判断参数个数与类型。

<?php
 
class demo{
 
    private $_args;
 
    public function construct(){
        $args_num = func_num_args();
        if($args_num==2){
            $this->_args = array(
                                'id' => func_get_arg(0),
                                'dname' => func_get_arg(1)
                            );
        }elseif($args_num==1 && is_array(func_get_arg(0))){
            $this->_args = array(
                                'device'=>func_get_arg(0)
                            );
        }else{
            exit('func param not match');
        }    
    }
 
    public function show(){
        echo '<pre>';
        print_r($this->_args);
        echo '</pre>';
    }
 
}
 
// demo1
$id = 1;
$dname = 'fdipzone';
$obj = new demo($id, $dname);
$obj->show();
 
// demo2
$device = array('iOS','Android');
$obj = new demo($device);
$obj->show();
 
?>

以上就是php中多个构造函数的问题解决办法的详细内容,更多请关注php中文网其它相关文章!

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

0

主题

11

帖子

35

积分

新手上路

Rank: 1

积分
35
沙发
发表于 2022-5-22 09:28 来自手机 | 只看该作者
怎么用源代码下载文件
回复

使用道具 举报

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表