https://blog.csdn.net/besily/article/details/5069383
https://www.cnblogs.com/hpliu2729/archive/2013/03/28/2987396.html
https://blog.csdn.net/qq_14989227/article/details/74783322
在PHP里,如果你没有手写构造函数,则php在实例化这个对象的时候,会自动为类成员以及类方法进行初始化,分配内存等工作,但是有些时候不能满足我们的要求,比如我们要在对象实例化的时候传递参数,那么就需要手动编写构造函数了,手写构造函数有两种写法,只是表现形式不同,其实本质一样
class test
{
function __construct()
{
//your code
}
}
class test
{
function test()//如果方法名跟类名字一样,将被认为是构造函数
{
//your code
}
}
以上为两种基本形式
传递参数进行实例化的例子,简单的写一个参考
class test
{
public $test = '';
function __construct($input = '')
{
$this->test = $input;
}
function getTest()
{
return $this->test;
}
}
$a = new test('a test');
echo $a->getTest();
//将输出 a test
$b = new test();
echo $b->getTest();
//没有任何输出
- <?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();