# 命名空间
使用命名空间可以将函数声明在指定空间,防止函数重名引起冲突。 下面是定义 User.php 与 Article.php 两个文件内容如下:
user.php
<?php
namespace user;
function show(){
return "hi i mam use.pph/show";
}
?>
article.php
<?php
namespace article;
function show(){
return "hi i mam article.pph/show";
}
?>
namespace.php
<?php
include "user.php";
include "article.php";
echo user\show();
echo "\r\n";
echo article\show();
// hi i mam use.pph/show
// hi i mam article.pph/show
?>
# 参数传递
按值传递 按址(指针)传递 &
<?php
$a = 1;
// 值的传递
function inc($num){
return ++$num;
}
echo inc($a);
echo "\r\n";
echo $a;
// 2
// 1
// 指针传递
function deepinc(&$num){
return ++$num ;
}
echo "\r\n";
echo deepinc($a);
echo "\r\n";
echo $a;
// 2
// 2
?>
# 点语法,展开语法
<?php
function sum ($arr){
echo count($arr);
echo "\r\n";
$sum = 0;
for($index= count($arr);$index>=0;$index--){
$sum += $arr[$index];
}
return $sum;
}
function spread(...$args){
echo sum($args);
}
echo "\r\n";
echo spread(1,2,3);
//
// 3
// 6
?>
# 严格模式
<?php
// 严格模式,在文件头部定义
declare(strict_types=1);
function strict_input(int ...$num)
{
return sum($num);
}
# 返回值类型
可以指定函数的返回值的类型
<?php
$a = 1;
// 通过:data_type来指定返回值的类型
function func(): int
{
return "gausszhou";
}
// getMessage 获取异常消息内容 返回字符串类型的异常消息内容。
try {
var_dump(func());
} catch (\Throwable $th) {
echo $th->getMessage();
}
// Return value of func() must be of the type int, string returned
echo "\r\n";
// 其他规则
// ?int 表示返回类型为int或者null
function make(): String
{
return 100;
}
try {
var_dump(make());
} catch (\Throwable $th) {
echo $th->getMessage();
}
// string(3) "100"
# 作用范围
局部变量
在函数之中声明的变量就是局部变量,并且该变量只有在函数范围之中才能加以使用。如果其它程序局部需要调用使用该变量值时,必须透过「return」指令,来将其传回至主程序区块以作后续处理。
全局变量
在函数范围之外声明的变量为全局变量,在函数无法直接使用全局变量,函数要使用全局变量,必须要利用 global 引入或 $GLOBALS 超全局数组引入。
静态变量
PHP 支持声明函数变量为静态的(static)。一个静态变量在所有对该函数的调用之间共享,并且仅在脚本的执行期间函数第一次被调用时被初始化
<?php
$zcg = "gausszhou in global";
function func()
{
$zcg = "zcg";
echo "在函数体内\r\n";
echo $zcg;
// 在函数体内
// zcg
}
func();
echo "\r\n在函数外\r\n";
echo $zcg;
// 在函数外
// gausszhou in global
function func2()
{
global $zcg;
// 使用global关键字引入全局变量
echo $zcg;
}
echo "\r\n";
func2();
// gausszhou in global
function sum(int ...$num): int
{
static $count = 0;
// 这个静态变量会保存运行后的值
return $count += array_sum($num);
}
echo "\r\n";
echo sum(1, 2, 3);
echo "\r\n";
echo sum(1, 2, 3);