电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談定義一個(gè)PHP函數(shù)

瀏覽:59日期:2022-09-07 10:46:57
目錄概述函數(shù)參數(shù)與它們的數(shù)據(jù)類(lèi)型函數(shù)與它們的返回值可選參數(shù) VS 可空參數(shù)概述

<?phpfunction divide($dividend, $divisor){ return $dividend / $divisor;}echo divide(12, 4);echo divide(’sa’, ’sd’);

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

寫(xiě)出好的代碼是一個(gè)學(xué)無(wú)止境的過(guò)程。讓我們來(lái)改進(jìn)我們編寫(xiě) 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)一層,沒(méi)有 bug。

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

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

<?phpfunction divide(int $dividend, int $divisor){ return $dividend / $divisor;}echo divide(12, 4);echo divide(’sa’, ’sd’);

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

<?php// 可選參數(shù)function getName(string $firstName, string $lastName = ’’){ return $firstName . ’ ’ . $lastName;}echo getName(’Muhammad’, ’Nauman’); // Muhammad Naumanecho getName(’Adam’); // Adamfunction divide(int $dividend, int $divisor = 2){ return $dividend / $divisor;}echo divide(12, 4); // 3echo divide(12); // 6// 僅接收 Request 類(lèi)的實(shí)例參數(shù) $requestfunction getReuestParams(Request $request){ return $request->only(’name’, ’email’);}

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

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

淺談定義一個(gè)PHP函數(shù)

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

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

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

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

<?php// 可選參數(shù)function getName(string $firstName, string $lastName = ’’) : string { return $firstName . ’ ’ . $lastName;}echo getName(’Muhammad’, ’Nauman’); // Muhammad Naumanecho getName(’Adam’); // Adamfunction divide(int $dividend, int $divisor = 2) : int { return $dividend / $divisor;}echo divide(12, 4); // 3echo divide(12); // 6// 僅接收 Request 類(lèi)的實(shí)例 $request 作為參數(shù)function getReuestParams(Request $request) : array { return $request->only(’name’, ’email’);}// 返回 void 類(lèi)型$attribute = 2;function changeAttribute(string &$param, $value) : void { $param = $value;}changeAttribute($attribute, 5);echo $attribute; // 5

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

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

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

<?phpfunction nullableParameter(?string $name){ return $name;}echo nullableParameter(null); // 不會(huì)返回任何東西echo nullableParameter(’Nauman’); // Naumanecho nullableParameter(); // 致命錯(cuò)誤function nullableParameterWithReturnType(?string $name) : string{ return $name;}echo nullableParameter(null); // 致命錯(cuò)誤,必須返回 string 類(lèi)型echo nullableParameter(’Nauman’); // Naumanfunction nullableReturnType(string $name) : ?string{ return $name;}echo nullableParameter(null); // 致命錯(cuò)誤,$name 應(yīng)該是 string 類(lèi)型echo nullableParameter(’Nauman’); // Nauman

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

以上就是淺談定義一個(gè)PHP函數(shù)的詳細(xì)內(nèi)容,更多關(guān)于定義一個(gè)PHP函數(shù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 365文案网_全网创意文案句子素材站| LOGO设计_品牌设计_VI设计 - 特创易 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 家德利门业,家居安全门,别墅大门 - 安徽家德利门业有限公司 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 四川实木门_成都实木门 - 蓬溪聚成门业有限公司 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 搪玻璃冷凝器_厂家-越宏化工设备 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 陕西鹏展科技有限公司 | 爆炸冲击传感器-无线遥测传感器-航天星百科| 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 创绿家招商加盟网-除甲醛加盟-甲醛治理加盟-室内除甲醛加盟-创绿家招商官网 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 广东成考网-广东成人高考网| 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 水平筛厂家-三轴椭圆水平振动筛-泥沙震动筛设备_山东奥凯诺矿机 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 圈酒招商网【jiushuitv.com】_酒水招商_代理_加盟平台 |