鍍金池/ 問(wèn)答/PHP  C++/ 參數(shù)為什么要賦值為空呢?

參數(shù)為什么要賦值為空呢?

$username = ''為什么要這樣寫(xiě)呢?直接寫(xiě)$username不行嗎?我看有時(shí)還賦值為數(shù)組$username =[]這樣做有什么用呢?

 public function __construct($username = '')
    {
        $this->username = $username;
    }
回答
編輯回答
不舍棄
  1. 構(gòu)造函數(shù)里面的$username = ''$username的默認(rèn)參數(shù),可以使用new User()new User('abc')來(lái)給User類(lèi)的$username屬性賦值
  2. 后面的$username = []是一種好的習(xí)慣,對(duì)$username進(jìn)行初始化,參見(jiàn)手冊(cè)PHP基礎(chǔ),初始化變量
<?php
function test($res){
    $ret = [];
    if($res){
        $ret = [1,2,3];
    }
    return $ret;
}

function test2($res){
    if($res){
        $ret = [1,2,3];
    }
    return $ret;
}
var_dump(test(false));
var_dump(test2(false));
2017年12月27日 02:54
編輯回答
慢半拍

當(dāng)構(gòu)造函數(shù)不傳參數(shù)時(shí),$username默認(rèn)傳參數(shù)為""

clipboard.png

2018年9月10日 05:47
編輯回答
疚幼

題主問(wèn)題按我理解可以分為兩個(gè)問(wèn)題
1.$username = ''為什么要這樣寫(xiě)呢?
這樣寫(xiě)的目的在于給$username一個(gè)默認(rèn)值,請(qǐng)看下面的例子

class example {
    public $username;
    public function __construct($username = '') {
        $this->username = $username;
    }
    
    public function get_username() {
        echo $this->username;
    }
}

$test1 = new example('我是參數(shù)');
$test1->get_username();
當(dāng)執(zhí)行上面兩行代碼時(shí),頁(yè)面會(huì)打印出 ‘我是參數(shù)’ 四個(gè)字。也就說(shuō)我們向構(gòu)造方法傳入了‘我是參數(shù)’這個(gè)字符串

$test2 = new example();
$test2->get_username();
當(dāng)執(zhí)行上面兩行代碼時(shí),頁(yè)面輸出一個(gè)空字符串。這次我們沒(méi)有傳參,所以example類(lèi)的構(gòu)造函數(shù)默認(rèn)將$username的值設(shè)為了空字符串。

2.不給默認(rèn)值,直接寫(xiě)$username不行嗎?
當(dāng)然可以,不過(guò)需要注意一個(gè)問(wèn)題,就是初始化上例中example類(lèi)的時(shí)候必須傳參,不然PHP會(huì)報(bào)缺少參數(shù)的提示。

$test1 = new example('我是參數(shù)'); 這行代碼中的 ‘我是參數(shù)’ 必須傳入。
2017年9月18日 00:37