首頁 >後端開發 >php教程 >php中多個建構函數的問題解決方法

php中多個建構函數的問題解決方法

黄舟
黄舟原創
2017-07-02 09:43:292779瀏覽

要實作一個建構子是兩個變數,另一個建構子是一個陣列
如:

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(
                                &#39;id&#39; => func_get_arg(0),
                                &#39;dname&#39; => func_get_arg(1)
                            );
        }elseif($args_num==1 && is_array(func_get_arg(0))){
            $this->_args = array(
                                &#39;device&#39;=>func_get_arg(0)
                            );
        }else{
            exit(&#39;func param not match&#39;);
        }    
    }
 
    public function show(){
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        print_r($this->_args);
        echo &#39;
'; } } // 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn