成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

其實(shí)你并不懂如何定義一個(gè) PHP 函數(shù)

zero / 2587人閱讀

摘要:讓我們改變上面的函數(shù)定義現(xiàn)在,第二次調(diào)用這個(gè)函數(shù)將會(huì)拋出一個(gè)致命錯(cuò)誤,指出其需要的參數(shù)必須是整數(shù)類型??蛇x參數(shù)僅接收類的實(shí)例參數(shù)在定義的時(shí)候,將可選參數(shù)或帶默認(rèn)值的參數(shù)作為最后一個(gè)參數(shù)。


這段代碼乍一看沒毛病,但是如果你向它傳遞「任意」參數(shù),它就會(huì)出問(wèn)題。

寫出好的代碼是一個(gè)學(xué)無(wú)止境的過(guò)程。讓我們來(lái)改進(jìn)我們編寫 PHP 函數(shù)的方式。 看下上面的代碼,想想第二個(gè)函數(shù)調(diào)用那里會(huì)發(fā)生什么情況? 它會(huì)接受你輸入的任何參數(shù),并且嘗試執(zhí)行然后拋出一個(gè)數(shù)學(xué)錯(cuò)誤。 但是我們?cè)趺床拍茏屢粋€(gè)函數(shù)嚴(yán)格接收能使其正確執(zhí)行的參數(shù)呢? 現(xiàn)代的 PHP 解決了這個(gè)問(wèn)題,并且有更多妙法能讓你的代碼質(zhì)量更進(jìn)一層,沒有 bug。

函數(shù)參數(shù)與它們的數(shù)據(jù)類型

你可以嚴(yán)格控制你的函數(shù),使其只接收讓它正確運(yùn)行的參數(shù)。讓我們改變上面的函數(shù)定義:


現(xiàn)在,第二次調(diào)用這個(gè)函數(shù)將會(huì)拋出一個(gè)致命錯(cuò)誤,指出其需要的參數(shù)必須是整數(shù)類型。你可以用不同的方式處理參數(shù)。

only("name", "email");
}
在定義的時(shí)候,將可選參數(shù)或帶默認(rèn)值的參數(shù)作為最后一個(gè)參數(shù)。

PHP 7.1 也給可迭代數(shù)據(jù)介紹了一種偽類型。它能接收任何可迭代的數(shù)據(jù)。

上圖是使用了 iterable 數(shù)據(jù)類型的函數(shù)。

現(xiàn)在通過(guò)代碼,我們可以控制的更多了,不是嗎?沒錯(cuò),確實(shí)如此!

函數(shù)與它們的返回值

正如你可以控制傳遞給指定函數(shù)的參數(shù)類型一樣,你也可以控制函數(shù)的返回值類型。它能確保你的函數(shù)總是返回同一個(gè)數(shù)據(jù)類型,并且不會(huì)崩潰。我們改變一下上面的代碼:

only("name", "email");
}
// 返回 void 類型
$attribute = 2;
function changeAttribute(string &$param, $value) : void {
    $param = $value;
}
changeAttribute($attribute, 5);
echo $attribute; // 5

PHP 逐漸引入了這些功能,如:5.1 版引入的數(shù)組類型作為參數(shù),5.4 版引入的可調(diào)用類型(callable type),以及 7.1 版引入的 void 返回類型等。

可選參數(shù) VS 可空參數(shù)

除了可選參數(shù)外,你還可以定義可空(nullable)參數(shù),這意味著你可以定義一種可空參數(shù)類型。我們來(lái)看個(gè)例子:


顯然,可空參數(shù)不是可選參數(shù),你必須傳遞一個(gè)值或者是 null。我個(gè)人喜歡使用空值作為可選參數(shù),但這取決于你的任務(wù)需求。

總結(jié)

從我開啟職業(yè)生涯的時(shí)候我就使用 PHP 了,我真的很愛這門語(yǔ)言。在過(guò)去很長(zhǎng)一段時(shí)間里,它都是開發(fā) web 應(yīng)用的不二之選?,F(xiàn)在 7.x 版本又填補(bǔ)了許多高級(jí)特性和現(xiàn)代化應(yīng)用的需求,并且提高了開發(fā)者的效率。這門語(yǔ)言正不斷的發(fā)生改變,找出這些變化,并停止過(guò)去的寫法,放棄你原來(lái)的習(xí)慣并自豪的使用這些新特性,讓你的代碼更易讀易懂。 Happy coding?:)

更多現(xiàn)代化 PHP 知識(shí),請(qǐng)前往 Laravel / PHP 知識(shí)社區(qū)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/28593.html

相關(guān)文章

  • PHP設(shè)計(jì)模式(八):工廠模式

    摘要:原文地址設(shè)計(jì)模式八工廠模式在設(shè)計(jì)模式七設(shè)計(jì)模式分類中我們提到過(guò)創(chuàng)建設(shè)計(jì)模式,創(chuàng)建設(shè)計(jì)模式專注于設(shè)計(jì)對(duì)象和實(shí)例的創(chuàng)建過(guò)程。工廠模式工廠模式,也是五種設(shè)計(jì)模式中唯一的類的設(shè)計(jì)模式,即在類中就能實(shí)現(xiàn)的設(shè)計(jì)模式。 原文地址:PHP設(shè)計(jì)模式(八):工廠模式 Introduction 在PHP設(shè)計(jì)模式(七):設(shè)計(jì)模式分類中我們提到過(guò)創(chuàng)建設(shè)計(jì)模式(Creation patterns),創(chuàng)建設(shè)計(jì)模式專...

    sorra 評(píng)論0 收藏0
  • 永強(qiáng)教你加解密:對(duì)稱篇(一)

    摘要:大家好,我是永強(qiáng),就是老李之前經(jīng)常給你們說(shuō)的區(qū)塊鏈大神大學(xué)肄業(yè)卻依然大公司主程一波兒流只生活在老李口中尚未真實(shí)露面的騙錢高手老王的左膀右臂趙永強(qiáng)。 大家好,我是永強(qiáng),就是老李之前經(jīng)常給你們說(shuō)的區(qū)塊鏈大神、大學(xué)肄業(yè)卻依然大公司iOS主程一波兒流、只生活在老李口中尚未真實(shí)露面的騙錢高手、老王的左膀右臂 ——— 趙永強(qiáng)。我和尼古拉斯趙四之間并沒有什么強(qiáng)關(guān)聯(lián),我只是單方面認(rèn)識(shí)他而已。 之前老李...

    opengps 評(píng)論0 收藏0
  • [譯]并不知道Node

    摘要:?jiǎn)栴}什么是調(diào)用棧并且它是的一部分么調(diào)用棧當(dāng)然是的一部分。為什么理解是重要的因?yàn)槟阍诿總€(gè)進(jìn)程中只能獲取一個(gè)調(diào)用棧。它是一個(gè)從事件隊(duì)列中跳去事件的循環(huán)并且將它們的回調(diào)壓入到調(diào)用棧中。當(dāng)調(diào)用棧為空的時(shí)候,事件循環(huán)可以決定下一步執(zhí)行哪一個(gè)。 你并不知道Node 原文:You don’t know Node 譯者:neal1991 welcome to star my articles-tra...

    miqt 評(píng)論0 收藏0
  • 體驗(yàn)javascript之美6:如果你覺得什么都會(huì)了或者不知道js學(xué)什么了看這里-面向?qū)ο缶幊?/b>

    摘要:面向過(guò)程函數(shù)式編程面向?qū)ο缶幊痰诙€(gè)并不是大家理解的那樣,我們先說(shuō)舉個(gè)現(xiàn)實(shí)例子就明白了。多說(shuō)一句函數(shù)是編程是非常強(qiáng)大也是我最喜歡的,以后再說(shuō),我們先說(shuō)面向?qū)ο缶幊獭? 概述 當(dāng)大家已經(jīng)把js的語(yǔ)言基礎(chǔ)理解了,然后能夠?qū)懗鲆恍┖?jiǎn)單的例子了,這個(gè)時(shí)候基本上達(dá)到了一年工作經(jīng)驗(yàn)的水平,而自己能夠獨(dú)立的寫一些小功能,完成一些小效果,或者臨摹修改一些比較復(fù)雜的插件的時(shí)候差不多就是兩年工作經(jīng)驗(yàn)的水平,...

    changfeng1050 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<