要实现一个构造函数是两个变量,另一个构造函数是一个数组。
如:
public function construct($id, $dname) public function construct($device=array())
在网上只搜到了,通过func_num_args判断参数个数实现,有通过判断类型实现的方法么?
在一个文件中不可能同时存在两个相同名字的方法函数
2.如果在不同文件中 可以用命名空间的方式实现相同函数的调用(php版本要 5.3.0 以上)
所以你的判断没有实在意义啊
php不能重载滴,把参数改成数组 在函数内区别吧
我想看看源代码它们是以什么形式并存的,继承?
立即学习“PHP免费学习笔记(深入)”;
gettype -- 获取变量的类型
construct 不是 php 类的构造函数
construct 才是!
虽然 php 不支持重载,但楼主也并没有说是在一个类中的同名方法
PHP经典实例(第2版)能够为您节省宝贵的Web开发时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。《PHP经典实例(第2版)》将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序。在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,《PHP经典实例(第2版)》中内容涵盖了:表单处理;Session管理;数据库交互;使用We
453
自己在构造函数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中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号