php闭包应用

laravel 路由 bingTo 把路由URL映射到匿名回调函数上,框架会把匿名回调函数绑定到应用对象上,这样在匿名函数中就可以使用$this关键字引用重要的应用对象。Illuminate\Support\Traits\Macroable的__call方法。
在这里插入图片描述
自己写一个简单的demo:

<?php
<?phpnamespace Hjj\DesignPatterns\Tests;use PHPUnit\Framework\TestCase;
class App {protected $routes = [];protected $responseStatus = '200 OK';protected $responseContentType = 'text/html';protected $responseBody = 'Laravel学院';public function addRoute($routePath, $routeCallback) {$this->routes[$routePath] = $routeCallback->bindTo($this, __CLASS__);}public function dispatch($currentPath) {foreach ($this->routes as $routePath => $callback) {if( $routePath === $currentPath) {$callback();}}
//        header('HTTP/1.1 ' . $this->responseStatus);
//        header('Content-Type: ' . $this->responseContentType);
//        header('Content-Length: ' . mb_strlen($this->responseBody));return $this->responseBody;}}
class Closure extends TestCase
{public function testClosure () {$app = new App();$app->addRoute('user/nonfu', function(){$this->responseContentType = 'application/json;charset=utf8';$this->responseBody = '{"name":"LaravelAcademy"}';});$result = $app->dispatch('user/nonfu');$this->assertSame('{"name":"LaravelAcademy"}', $result);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker-Image

Docker Docker 镜像是什么为什么需要镜像镜像命令总览docker imagesdocker tagdocker pulldocker pushdocker rmidocker savedocker loaddocker image inspectdocker historydocker importdocker image prunedocker build Docker 镜像是什么 Docker image 本质上是一个 read-on…

每周编辑精选|在线运行 Deepmoney 金融大模型、AI 偏好等多个优质数据集上线

目前&#xff0c;AI 领域对金融模型的研究成果大多是基于公共知识进行训练的&#xff0c;但在实际的金融实践中&#xff0c;这些公共知识对于当前市场的可解释性往往严重不足。一个理想的金融大模型应该能够理解新闻或数据事件&#xff0c;并能够即时地从主观和量化两个角度对事…

2024 年 5 个 Linux 开源数字化学习平台

与其他行业一样&#xff0c;教育界多年来一直在经历数字化转型的过程。随着数字化学习平台的建立&#xff0c;目前只要能上网&#xff0c;任何人都可以接受教育。 “e-learning”一词的意思是“数字化学习”&#xff0c;是当今最常用的词之一。 它指的是通常在互联网上进行的培…

一文带你弄懂JVM与JAVA体系结构

文章目录 1.JVM 与 Java 体系结构1.1. 前言1.2. 一些参考书目1.3. Java 及 JVM 简介1.4. Java 发展的重大事件1.5. 虚拟机与 Java 虚拟机1.6. JVM 的整体结构1.7. Java 代码执行流程1.8. JVM 的架构模型1.9. JVM 的生命周期 1.JVM 与 Java 体系结构 1.1. 前言 作为 Java 工程…

带有GUI界面的电机故障诊断(MSCNN-BILSTM-ATTENTION模型,TensorFlow框架,有中文注释,带有六种结果可视化)

本次创作最主要是在MSCNN-BILSTM-ATTENTION模型&#xff08;可轻松替换为其它模型&#xff09;基础上&#xff0c;搭建GUI测试界面&#xff0c;方便对你想要测试的数据的进行测试&#xff0c;同时进行了全面的结果可视化&#xff1a;1.训练集和测试集的准确率曲线&#xff0c;2…

【解决报错】vi/vim修改文件时报错:Found a swap file by the name xxxxx

目录 报错内容报错原因解决方法 报错内容 vim打开文件提示&#xff1a; Found a swap file by the name xxxxx报错原因 使用vi或vim编辑器编写代码时由于网络不稳定&#xff08;或其他种种原因&#xff09;断开了连接&#xff0c;编辑好的代码没有运行和保存&#xff0c;再次…

LeetCode第一天(414.第三大的数)

方法一&#xff1a;排序 将数组从大到小排序后&#xff0c;从头开始遍历数组&#xff0c;通过判断相邻元素是否不同&#xff0c;来统计不同元素的个数。如果能找到三个不同的元素&#xff0c;就返回第三大的元素&#xff0c;否则返回最大的元素。 Arrays.sort 是一个 Java 中的…

NIO简介以及用NIO实现一个群聊系统

一、BIO的工作原理 传统Io(BIO)的本质就是面向字节流来进行数据传输的 ①:当两个进程之间进行相互通信&#xff0c;我们需要建立一个用于传输数据的管道(输入流、输出流)&#xff0c;原来我们传输数据面对的直接就是管道里面一个个字节数据的流动&#xff08;我们弄了一个 by…

Git原理及使用

1、Git初识 Git是一种版本控制器: 对于同一份文件,做多次改动,Git会记录每一次改动前后的文件。 通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 注意: Git其实只能跟踪⽂本⽂件的改动,⽐如TXT⽂件,⽹⻚,所有的程序代码…

RabbitMQ之Plugins插件----AMQP对接MQTT

1.启用插件 rabbitmq-plugins enable rabbitmq_mqtt 2.检查是否启动成功&#xff0c;打开rabbitmq后台 3.概念&#xff1a; AMQP是由交换器和queue队列组成的消息队列机制&#xff0c;MQTT是由订阅主题组成的消息机制 1.MQTT创建连接时会向rabbitmq创建一个自己的queue&…

面向对象设计之单一职责原则

设计模式专栏&#xff1a;http://t.csdnimg.cn/6sBRl 目录 1.单一职责原则的定义和解读 2.如何判断类的职责是否单一 3.类的职责是否越细化越好 4.总结 1.单一职责原则的定义和解读 单一职责原则(Single Responsibility Principle&#xff0c;SRP)的描述&#xff1a;一个类…

内网横向移动小结

windows Windows-Mimikatz 适用环境&#xff1a; 微软为了防止明文密码泄露发布了补丁 KB2871997&#xff0c;关闭了 Wdigest 功能。当系统为 win10 或 2012R2 以上时&#xff0c;默认在内存缓存中禁止保存明文密码&#xff0c;此时可以通过修改注册表的方式抓取明文&#xff…

Android 静默安装成功后自启动

近期开发上线一个常驻app&#xff0c;项目已上线&#xff0c;今天随笔记录一下静默安装相关内容。我分三篇静默安装&#xff08;root版&#xff09;、静默安装&#xff08;无障碍版&#xff09;、监听系统更新、卸载、安装。 先说说我的项目需求&#xff1a;要求app一直运行&am…

总结 | vue3项目初始化(附相应链接)

如何运行 vue 项目&#xff1a;vscode运行vue项目_vscode启动vue项目命令-CSDN博客 vue3项目搭建 目录管理 git管理&#xff1a;vue3项目搭建并git管理_git 新建vue3项目-CSDN博客 目录调整&#xff1a;vue3项目 - 目录调整-CSDN博客 vscode中快速生成vue3模板&#xff1a…

基于ssm高校专业信息管理系统设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校专业信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

3.23项目:聊天室

1、 基于UDP的网络聊天室 项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器 #inc…

一、SpringBoot基础搭建

本教程主要给初学SpringBoot的开发者&#xff0c;通过idea搭建单体服务提供手把手教学例程&#xff0c;主要目的在于理解环境的搭建&#xff0c;以及maven模块之间的整合与调用 源码&#xff1a;jun/learn-springboot 以商城项目为搭建例子&#xff0c;首先计划建1个父模块&…

Wireshark TS | DNS 案例分析之外的思考

前言 承接之前一篇《Packet Challenge 之 DNS 案例分析》&#xff0c;在数据包跟踪文件 dnsing.pcapng 中&#xff0c;关于第 4 题&#xff08;What is the largest DNS response time seen in this trace file? &#xff09;的分析过程中曾经碰到一个小问题&#xff0c;主要…

看PDF时点击书签页面变小的解决方法

用Adobe acrobat看PDF时&#xff0c;多数PDF点击书签跳到的页面字体大小很合适&#xff0c;但是有些pdf文件&#xff0c;一点击书签后&#xff0c;就变为很小或者很大&#xff0c;下面是解决方法&#xff1a; ①点击某个书签&#xff0c;然后按ctrlA全选书签&#xff0c;右键—…

MySQL数据库-MySQL基础-下篇-函数、约束、多表查询、事务

文章目录 函数一、字符串函数练习 二、数值函数三、日期函数四、流程函数总结 约束概述约束演示外键约束概念语法删除/更新行为 总结 多表查询多表关系一对多&#xff08;多对一&#xff09;多对多一对一 多表查询概述内连接外连接自连接*联合查询-union, union all子查询标量子…