首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 構造函數實現多參數重載的技巧

     編輯:PHP 綜合知識

核心原理

PHP 不支援方法重載,但可在 __construct 中利用 func_num_args() 獲取參數數量,func_get_arg() 取得參數值,實現「偽重載」。

實戰範例

<?php
class Demo {
    private $_args;

    public function __construct() {
        $args_num = func_num_args();

        if ($args_num === 2) {
            $this->_args = [
                'id'   => func_get_arg(0),
                'dname' => func_get_arg(1)
            ];
        } elseif ($args_num === 1 && is_array(func_get_arg(0))) {
            $this->_args = ['device' => func_get_arg(0)];
        } else {
            exit('func param not match');
        }
    }

    public function show() {
        echo '<pre>';
        print_r($this->_args);
        echo '</pre>';
    }
}

// 用法 1:兩個標量參數
$obj = new Demo(1, 'fdipzone');
$obj->show();
// 輸出: Array ( [id] => 1 [dname] => fdipzone )

// 用法 2:單一陣列參數
$obj = new Demo(['iOS', 'Android']);
$obj->show();
// 輸出: Array ( [device] => Array ( [0] => iOS [1] => Android ) )
?>

進階建議

  • PHP 7+ 可用 func_get_args() 獲取所有參數陣列,配合 ...$args 可變參數語法更優雅
  • 嚴格檢查參數型別與數量,避免隱性 Bug
  • 複雜場景建議採用建造者模式或工廠方法替代
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved