1. 函数作用域与闭包

  1. <?php
  2. // 1.函数作用域
  3. $name = '天蓬老师';
  4. $email = 'tp@php.cn';
  5. function demo1(): string
  6. {
  7. // 1.global
  8. global $name;
  9. $res .= 'name = ' .$name . '<br>';
  10. // 2.$GLOBALS
  11. $res .= 'email = ' .$GLOBALS['email'] . '<br>';
  12. return $res;
  13. }
  14. echo demo1();
  15. echo '<hr>';
  16. // 2.闭包:使用use()
  17. $demo2 = function () use ($name,$email) {
  18. return sprintf('name = %s<br>email = %s<br>',$name,$email);
  19. };
  20. echo $demo2()
  21. ?>

2. 回调的使用场景与参数调用

回调的使用场景:php单线程同步执行,遇到耗时函数时阻塞,可以改为回调函数异步执行

  1. <?php
  2. // 回调执行
  3. function demo1(string $name): string
  4. {
  5. return "Hello $name !";
  6. }
  7. // call_user_func(函数,参数列表)
  8. echo call_user_func('demo1','灭绝老师'), '<hr>';
  9. echo call_user_func_array('demo1',['php中文网']),'<br>';
  10. // 异步调用对象方法
  11. class User
  12. {
  13. // 实例方法
  14. public function hello(string $name) : string
  15. {
  16. return "Hello $name !";
  17. }
  18. // 静态方法:类调用
  19. public static function sum(string $site) :string
  20. {
  21. return "Hello $site !";
  22. }
  23. }
  24. // 实例方法
  25. $res = call_user_func_array([new User,'hello'],['天蓬老师']);
  26. echo $res,'<br>';
  27. // 静态方法
  28. $res = call_user_func_array('User::sum',['']);
  29. echo $res;
  30. ?>

json_encod()" class="reference-link">3.函数的多值返回、内置序列化函数、json_encod()

  1. <?php
  2. // 数组
  3. function demo1():array
  4. {
  5. return ['status' => 1, 'message' => '成功'];
  6. }
  7. $res = demo1();
  8. print_r($res);
  9. echo '<hr>';
  10. // 对象
  11. function demo2():object
  12. {
  13. // 匿名类
  14. return new class ()
  15. {
  16. public $name = 'admin';
  17. public $email = 'admin@qq.com';
  18. };
  19. }
  20. $user = demo2();
  21. print_r($user);
  22. echo '<hr>';
  23. // php内置序列化函数:serialize
  24. function demo3(): string
  25. {
  26. return serialize(['status' => 1, 'message' => '验证成功']);
  27. }
  28. $str = demo3();
  29. echo $str;
  30. echo '<hr>';
  31. // 转为json:json_encode()
  32. function demo4(): string
  33. {
  34. return json_encode(['status' => 1, 'message' => '验证成功']);
  35. }
  36. $str = demo4();
  37. echo $str,'<br>';
  38. ?>

更多相关文章

  1. 面向对象与函数式编程的简单案例
  2. 函数作用域与闭包-回调与参数-函数多值返回类型方式
  3. 0108-JSON二个函数,get,post发起ajax请求,理解跨域的原理
  4. Java 集合类 List 的那些坑
  5. Spring 是如何造出一个 Bean 的
  6. 函数的声明与定义
  7. 一文让你快速上手 Mockito 单元测试框架
  8. 如何编写优雅的异步代码 — CompletableFuture
  9. 字符串操作 — Google Guava

随机推荐

  1. 20155320 《Java程序设计》实验五网络编
  2. “树”不倒,人不散—数据结构的核心
  3. 关于JAVA回调函数的使用
  4. Java中的IO浅析(一)
  5. 使用Java在网页中的许多可能选择中选择一
  6. java并发包学习系列:生产者消费者模式
  7. 根据给出的语料库,训练n-gram模型。根据训
  8. 大学学的java,想转行学android或php,从长远
  9. Java线程的生命周期和状态控制
  10. java多线程jdk1.7与jdk1.6结果不一致的问