在PHP中重载构造?

2 php oop

php(5.3.7)支持重载吗?

例:

class myclass{

function __construct($arg1) { // Construct with 1 param}
function __construct($arg1,$arg2) { // Construct with 2 param}

}


new myclass(123); //> call the first construct
new myclass(123,'abc'); //> call the second
Run Code Online (Sandbox Code Playgroud)

Sta*_*glo 5

你必须实现一次构造函数并使用func_get_argsfunc_num_args像这样:

<?php

class myclass {
    function __construct() {
        $args = func_get_args();

        switch (func_num_args()) {
            case 1:
                var_dump($args[0]);
                break;
            case 2:
                var_dump($args[0], $args[1]);
                break;
            default:
                throw new Exception("Wrong number of arguments passed to the constructor of myclass");
        }
    }
}

new myclass(123); //> call the first construct
new myclass(123,'abc'); //> call the second
new myclass(123,'abc','xyz'); //> will throw an exception
Run Code Online (Sandbox Code Playgroud)

这样您就可以支持任意数量的参数.