今天所学心得、笔记
示例代码截图
1、函数的作用域
$studentName = "小明";
$score = 85;
//由于作用域不同,函数内无法访问外部变量
function demo1(): string {
$res = '';
return $res .= '学生姓名 : ' . $studentName. '------学生成绩 = ' . $score.'<br>';
}
echo demo1();
//使用global关键字申明全局变量,使用$GLOBALS超全局数组,变为全局变量
function demo2(): string {
$res = '';
global $studentName;
return $res .= '学生姓名 : ' . $studentName. '------学生成绩 = ' . $GLOBALS['score'].'<br>';
}
echo demo2();
//使用闭包访问外部函数
$demo3 = function() use ($studentName, $score): string {
$res = '';
return $res .= '学生姓名 : ' . $studentName. '------学生成绩 = ' . $score .'<br>';
};
echo $demo3();
示例代码截图
2、使用回调、函数的返回值, 多值
function demo4(string $myName): string {
return "大家好,我是{$myName},请大家关照...";
// return sprintf("大家好,我是%s,请大家关照...", $myName);
}
echo call_user_func_array('demo4',['小明']);
echo '<br>';
// 异步函数, 调用数据库
$sql = 'SELECT * FROM `bk_cate` LIMIT 1';
$demo5 = function ($dsn, $username, $password) use ($sql) {
$pdo = new PDO($dsn, $username, $password);
$stmt = $pdo->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
};
$res = call_user_func_array($demo5, ['mysql:dbname=bick','root','zdm12345678']);
print_r($res);
echo '<br>';
// 异步函数, 调用对象方法
class Students {
// 实例方法
public function read(string $book): string {
return "学生们正在读{$book}方面的书籍...";
}
// 静态方法: 类调用
public static function run(string $site): string {
return "学生们正在{$site}跑步...";
}
}
// 调用实例方法
//数组
$res = call_user_func_array([new Students, 'read'], ['科学研究']);
echo $res; echo '<br>';
$res = call_user_func_array('Students::run', ['田径场']);
echo $res;
echo '<hr>';
// 函数的返回值, 多值
//数组
function demo6(): array {
return ['username' => 'tom', 'password' => '12345678'];
}
var_dump(demo6());
echo '<br>';
// 对象
function demo7() : object
{
// 匿名类
return new class ()
{
public $username = 'tom';
public $password = '12345678';
};
}
$res = demo7();
echo $res->username, '------' ,$res->password;
示例代码截图
3、序列化
//PHP专用序列化函数
function demo8(): string {
return serialize(['username' => 'tom', 'password' => '壹贰叁肆伍陆柒捌']);
}
echo demo8(); echo '<br>';
// PHP专用函数, 反序列化
var_dump(unserialize(demo8()));
echo '<br>';
//序列化,通用的json格式的字符串
//使用JSON_UNESCAPED_UNICODE参数,使序列化后显示汉字
function demo9(): string {
return json_encode(['username' => 'tom', 'password' => '壹贰叁肆伍陆柒捌'],JSON_UNESCAPED_UNICODE);
}
echo demo9(); echo '<br>';
//反序列化,json格式的字符串
// 默认将外部的json解析成object对象类型
var_dump(json_decode(demo9())); echo '<br>';
// 给 json_decode()传入第二个参数 : true,也可以使用数组方式
var_dump(json_decode(demo9(), true));