博主信息
博文 37
粉丝 2
评论 0
访问量 34582
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
0128- 实例演示函数作用域与闭包,回调的使用场景与参数调用
世纪天城
原创
862人浏览过

函数作用域
<?php

// 1.php: 全局作用域

// 声明在函数外部的成员,默认就是全局成员

  1. $name = '你好';
  2. $res = 'php';

// 2.php 函数作用域: 只有调用它的时候才会创建

  1. function a($id): string
  2. {
  3. $a=$id;
  4. return $a;
  5. }

// php函数作用域: 只有调用它的时候才会创建

// 此时函数里面的$a成员才会被创建并访问

// 由于在函数内部无法访问函数外部的成员,但如果想在函数内部访问全局或者外部的成员有以下种方式可以在函数内部访问外部成员

  1. global

    1. function b(): string
    2. {
    3. // 用global将外部成员导入函数内部
    4. global $name;
    5. global $res;
    6. return $name.$res;
    7. }
  1. $GLOBALS,超全局数组不受作用域限制

    1. function c():string
    2. {
    3. return '1: '.$GLOBALS['name'].' 2: '.$GLOBALS['res'];
    4. }

php闭包: 匿名函数

// 1.闭包: 就是匿名函数,可以访问函数外部的自由变量也就是父作用域中的变量

  1. $name='张三';
  2. $age ='20';

// 用use关键字将外部成员引入函数即可

  1. $a =function() use($name,$age){
  2. return '姓名: '. $name .'年龄: '.$age;
  3. };
  4. echo $a();
  5. echo '<hr>';

// 2.闭包支持引用传参: 只需在参数前加 &

// 闭包中将引用参数更新后,会实时的映射到外部的原始参数中 实现实时更新外部数据

  1. $b =function($age1) use($name,&$age){
  2. $age=$age1;
  3. return '姓名: '. $name .'年龄: '.$age1;
  4. };
  5. echo $b(18);
  6. echo '<hr>';

// 注意:use禁止使用以下三种参数

// 1. 超全局不让用: $_GET

// 2. $this

// 3. 与当前参数重名不让用

// 3.闭包经常用作函数的返回值

  1. function b($name){
  2. // 返回一个函数,php闭包函数最佳使用场景
  3. // 但要记住闭包函数必须返回
  4. return function ($age)use($name){
  5. return sprintf('姓名:%s 年龄:%s',$name,$age);
  6. };
  7. }
  8. echo b('王五')('18');

json格式的字符串

转为通用的json格式的字符串
这样就可以与其它编程语言进行数据交换,例如与前端js,java,python…
JSON_UNESCAPED_UNICODE 为中文 不需要转码

  1. function d(){
  2. return json_encode(['res' => '1', 'msg' => '登录成功'],JSON_UNESCAPED_UNICODE);
  3. }
  4. $res1 = d();
  5. // 如果当前脚本接收到一个前端或其它接口发送过来的json格式的数据,可以进行解析
  6. // 解析的目的是将外部的json还原成php能够处理的数据类型
  7. $str = json_decode($res1);
  8. if($str -> res==='1'){
  9. printf('%s',$str->msg);
  10. }

如果不喜欢对象的方式访问,也可以使用数组方式
给 json_decode()传入第二个参数 : true

  1. $str1 = json_decode($res1, true);
  2. if($str1['res']==='1'){
  3. printf('%s',$str1['msg']);
  4. }
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学