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

您的位置:首頁技術文章
文章詳情頁

PHP基礎之類和對象19——類型約束

瀏覽:2日期:2022-09-14 18:58:05

PHP 5 可以使用類型約束。函數的參數可以指定必須為對象(在函數原型里面指定類的名字),接口,數組(PHP 5.1 起)或者?callable(PHP 5.4 起)。不過如果使用NULL?作為參數的默認值,那么在調用函數的時候依然可以使用?NULL?作為實參。

如果一個類或接口指定了類型約束,則其所有的子類或實現也都如此。

類型約束不能用于標量類型如?int?或?string。Traits?也不允許。

Example #1 類型約束示例

<?php //如下面的類 class MyClass {/** * 測試函數 * 第一個參數必須為 OtherClass 類的一個對象 */public function test(OtherClass $otherclass) { echo $otherclass->var;}/** * 另一個測試函數 * 第一個參數必須為數組 */public function test_array(array $input_array) { print_r($input_array);}/** * 第一個參數必須為遞歸類型 */public function test_interface(Traversable $iterator) { echo get_class($iterator);}/** * 第一個參數必須為回調類型 */public function test_callable(callable $callback, $data) { call_user_func($callback, $data);} } // OtherClass 類定義 class OtherClass {public $var = ’Hello World’; }?>

函數調用的參數與定義的參數類型不一致時,會拋出一個可捕獲的致命錯誤。

<?php // 兩個類的對象 $myclass = new MyClass; $otherclass = new OtherClass; // 致命錯誤:第一個參數必須是 OtherClass 類的一個對象 $myclass->test(’hello’); // 致命錯誤:第一個參數必須為 OtherClass 類的一個實例 $foo = new stdClass; $myclass->test($foo); // 致命錯誤:第一個參數不能為 null $myclass->test(null); // 正確:輸出 Hello World $myclass->test($otherclass); // 致命錯誤:第一個參數必須為數組 $myclass->test_array(’a string’); // 正確:輸出數組 $myclass->test_array(array(’a’, ’b’, ’c’)); // 正確:輸出 ArrayObject $myclass->test_interface(new ArrayObject(array())); // 正確:輸出 int(1) $myclass->test_callable(’var_dump’, 1);?>

類型約束不只是用在類的成員函數里,也能使用在函數里:

<?php // 如下面的類 class MyClass {public $var = ’Hello World’; } /** * 測試函數 * 第一個參數必須是 MyClass 類的一個對象 */ function MyFunction (MyClass $foo) {echo $foo->var; } // 正確 $myclass = new MyClass; MyFunction($myclass);?>

類型約束允許 NULL 值:

<?php /* 接受 NULL 值 */ function test(stdClass $obj = NULL) {} test(NULL); test(new stdClass);?>

標簽: PHP
相關文章:
主站蜘蛛池模板: 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 钢结构-钢结构厂房-钢结构工程[江苏海逵钢构厂] | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 中国在职研究生招生信息网| 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 模具钢_高速钢_不锈钢-万利钢金属材料 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 江苏大隆凯科技有限公司| 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? |