国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP填坑——函數

2019-11-08 02:08:57
字體:
來源:轉載
供稿:網友

php填坑——函數

測試環境 PHP version 5.3.29/5.6.29/7.1.0 Apache 2.4.25

函數參數

Example-1

自PHP 5.0 支持參數類型聲明為對象類型,即參數必須是某個對象的類; 自PHP 5.1 新增參數類型聲明為array,即形參類型必須是數組; 自PHP 7.0 新增函數參數類型為量類型,同時參數類型聲明支持嚴格模式,此時只支持標量類型int string float bool。 <?php //PHP 7.0 declare(strict_types=1); //聲明嚴格類型 function sum(int $a, int $b) { return $a + $b; } var_dump(sum(1, 2)); var_dump(sum(1.5, 2.5)); //類型錯誤

Example-2

方法的參數類型約束為對象類型:

<?php class C {} class D extends C {} // This doesn't extend C. class E {} function f(C $c) { echo get_class($c)."/n"; } f(new C); f(new D); f(new E); //錯誤,參數必須是C的實例

Example-3

PHP5.6+版本支持可變數量的參數列表。在 PHP 5.5 及更早版本中,使用函數 func_num_args(),func_get_arg(),和 func_get_args() 。

<?php function sum(...$numbers) { $accum = 0; foreach ($numbers as $n) { $accum += $n; } return $accum; } echo sum(1, 2, 3, 4);

Example-4

使用默認參數時,任何默認參數必須放在任何非默認參數的右側;否則,函數將不會按照預期的情況工作。

<?php function makeyogurt($type = "acidophilus", $flavour){ return "Making a bowl of $type $flavour./n"; } echo makeyogurt("raspberry"); // won't work as expected

可變函數

可變函數不能用于例如 echo,PRint,unset(),isset(),empty(),include,require 以及類似的語言結構。

Example-1

調用靜態方法時,函數調用要比靜態屬性優先。

<?phpclass Foo{ static $variable = 'static property'; static function Variable() { echo 'Method Variable called'; }}echo Foo::$variable; // This prints 'static property'. $variable = "Variable";Foo::$variable(); // This calls $foo->Variable()

Example-2

PHP 7.0 支持類調用方法為可變方法,而之前的版本則報錯。

<?phpnamespace Project/TestClass; class Test { static function funcToCall() { echo "test"; } }namespace Project/OtherTestClass; class OtherTest { static function callOtherFunc() { $func = '/Project/TestClass/Test::funcToCall'; $func(); } } echo OtherTest::callOtherFunc(); //outputs test

匿名函數

匿名函數(Anonymous functions),也叫閉包函數(closures),允許臨時創建一個沒有指定名稱的函數。最經常用作回調函數(callback)參數的值。

Example-1

閉包函數也可以作為變量的值來使用。PHP 會自動把此種表達式轉換成內置類 Closure 的對象實例。

<?php //PHP 7.0+ (function($name){ echo 'My name is ' . $name; })('Zhang San');

Example-2

閉包可以從父作用域中繼承變量。 任何此類變量都應該用 use 語言結構傳遞進去。

<?php $fruits = ['apples', 'oranges']; $example = function () use ($fruits) { echo $fruits[0]; }; $example();

Example-3

PHP 5.4 $this可用于匿名函數。

<?php class Test{ public function testing(){ return function() { var_dump($this); }; } } $object = new Test; $function = $object->testing(); $function();

Return

如果在全局范圍中調用,則當前腳本文件中止運行。 如果當前腳本文件是被 include 的或者 require 的,則控制交回調用文件。 如果當前腳本是被 include 的,則 return 的值會被當作 include 調用的返回值。 如果在主腳本文件中調用 return,則腳本中止運行。 如果當前腳本文件是在 php.ini 中的配置選項 auto_prepend_file 或者 auto_append_file 所指定的,則此腳本文件中止運行。

Example-1

PHP 7.0 可以強制函數返回類型。語法為function FunctionName ($arg1, $arg2, ...) : TYPE { }

<?php declare(strict_types=1); //strict_types function welcome($name):string { return $name; } echo welcome(90.99);?><?php class C {} function getC(): C { return new C; } var_dump(getC()); //object(C)#1 (0) { }?>

Example-2

PHP 7.0 如果指定了返回類型,則不能為null.

<?phpdeclare(strict_types=1);function add2ints(int $x, int $y):int{ $z = $x + $y; if ($z===0){ return null; //返回類型錯誤 } return $z;}$a = add2ints(3, 4);echo is_null($a) ? 'Null' : $a;$b = add2ints(-2, 2);echo is_null($b) ? 'Null' : $b;exit();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡西市| 株洲市| 德格县| 九龙坡区| 南雄市| 武平县| 昌江| 汾阳市| 马龙县| 遂平县| 兴文县| 潞西市| 澜沧| 长沙市| 伊宁市| 通渭县| 朝阳区| 罗定市| 改则县| 长汀县| 建德市| 梓潼县| 临漳县| 中山市| 宣恩县| 清镇市| 岑溪市| 东安县| 林州市| 洛宁县| 东辽县| 大宁县| 游戏| 伽师县| 衡阳市| 阿坝县| 沙雅县| 铁岭市| 南汇区| 珲春市| 新乡县|