php中多個建構函式的問題解決辦法

來源:互聯網
上載者:User
要實現一個建構函式是兩個變數,另一個建構函式是一個數組。
如:

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(); ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.