摘要:讓我們改變上面的函數定義現在,第二次調用這個函數將會拋出一個致命錯誤,指出其需要的參數必須是整數類型。可選參數僅接收類的實例參數在定義的時候,將可選參數或帶默認值的參數作為最后一個參數。
這段代碼乍一看沒毛病,但是如果你向它傳遞「任意」參數,它就會出問題。
寫出好的代碼是一個學無止境的過程。讓我們來改進我們編寫 PHP 函數的方式。 看下上面的代碼,想想第二個函數調用那里會發生什么情況? 它會接受你輸入的任何參數,并且嘗試執行然后拋出一個數學錯誤。 但是我們怎么才能讓一個函數嚴格接收能使其正確執行的參數呢? 現代的 PHP 解決了這個問題,并且有更多妙法能讓你的代碼質量更進一層,沒有 bug。
函數參數與它們的數據類型你可以嚴格控制你的函數,使其只接收讓它正確運行的參數。讓我們改變上面的函數定義:
現在,第二次調用這個函數將會拋出一個致命錯誤,指出其需要的參數必須是整數類型。你可以用不同的方式處理參數。
only("name", "email"); }在定義的時候,將可選參數或帶默認值的參數作為最后一個參數。PHP 7.1 也給可迭代數據介紹了一種偽類型。它能接收任何可迭代的數據。
上圖是使用了 iterable 數據類型的函數。
現在通過代碼,我們可以控制的更多了,不是嗎?沒錯,確實如此!
函數與它們的返回值正如你可以控制傳遞給指定函數的參數類型一樣,你也可以控制函數的返回值類型。它能確保你的函數總是返回同一個數據類型,并且不會崩潰。我們改變一下上面的代碼:
only("name", "email"); } // 返回 void 類型 $attribute = 2; function changeAttribute(string &$param, $value) : void { $param = $value; } changeAttribute($attribute, 5); echo $attribute; // 5PHP 逐漸引入了這些功能,如:5.1 版引入的數組類型作為參數,5.4 版引入的可調用類型(callable type),以及 7.1 版引入的 void 返回類型等。
可選參數 VS 可空參數除了可選參數外,你還可以定義可空(nullable)參數,這意味著你可以定義一種可空參數類型。我們來看個例子:
顯然,可空參數不是可選參數,你必須傳遞一個值或者是 null。我個人喜歡使用空值作為可選參數,但這取決于你的任務需求。
總結從我開啟職業生涯的時候我就使用 PHP 了,我真的很愛這門語言。在過去很長一段時間里,它都是開發 web 應用的不二之選。現在 7.x 版本又填補了許多高級特性和現代化應用的需求,并且提高了開發者的效率。這門語言正不斷的發生改變,找出這些變化,并停止過去的寫法,放棄你原來的習慣并自豪的使用這些新特性,讓你的代碼更易讀易懂。 Happy coding?:)
更多現代化 PHP 知識,請前往 Laravel / PHP 知識社區
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28593.html
摘要:原文地址設計模式八工廠模式在設計模式七設計模式分類中我們提到過創建設計模式,創建設計模式專注于設計對象和實例的創建過程。工廠模式工廠模式,也是五種設計模式中唯一的類的設計模式,即在類中就能實現的設計模式。 原文地址:PHP設計模式(八):工廠模式 Introduction 在PHP設計模式(七):設計模式分類中我們提到過創建設計模式(Creation patterns),創建設計模式專...
摘要:大家好,我是永強,就是老李之前經常給你們說的區塊鏈大神大學肄業卻依然大公司主程一波兒流只生活在老李口中尚未真實露面的騙錢高手老王的左膀右臂趙永強。 大家好,我是永強,就是老李之前經常給你們說的區塊鏈大神、大學肄業卻依然大公司iOS主程一波兒流、只生活在老李口中尚未真實露面的騙錢高手、老王的左膀右臂 ——— 趙永強。我和尼古拉斯趙四之間并沒有什么強關聯,我只是單方面認識他而已。 之前老李...
摘要:問題什么是調用棧并且它是的一部分么調用棧當然是的一部分。為什么理解是重要的因為你在每個進程中只能獲取一個調用棧。它是一個從事件隊列中跳去事件的循環并且將它們的回調壓入到調用棧中。當調用棧為空的時候,事件循環可以決定下一步執行哪一個。 你并不知道Node 原文:You don’t know Node 譯者:neal1991 welcome to star my articles-tra...
摘要:面向過程函數式編程面向對象編程第二個并不是大家理解的那樣,我們先說舉個現實例子就明白了。多說一句函數是編程是非常強大也是我最喜歡的,以后再說,我們先說面向對象編程。 概述 當大家已經把js的語言基礎理解了,然后能夠寫出一些簡單的例子了,這個時候基本上達到了一年工作經驗的水平,而自己能夠獨立的寫一些小功能,完成一些小效果,或者臨摹修改一些比較復雜的插件的時候差不多就是兩年工作經驗的水平,...
閱讀 2171·2020-06-12 14:26
閱讀 2477·2019-08-29 16:41
閱讀 1885·2019-08-29 15:28
閱讀 2448·2019-08-26 13:43
閱讀 753·2019-08-26 13:37
閱讀 2773·2019-08-23 18:13
閱讀 2791·2019-08-23 15:31
閱讀 1014·2019-08-23 14:10