<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
"Undefined variable: seoInfo (View: /www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php) (View: /www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php)"
<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
"Undefined variable: seoInfo (View: /www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php)"
<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
"Undefined variable: seoInfo"
<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
8
"Undefined variable: seoInfo"
"/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php"
3
array:8 [ "__path" => "/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php" "__data" => array:6 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "obLevel" => 1 "info" => array:14 [ "id" => 209 "category_id" => 3 "name" => "Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文PDF扫描版" "imgurl" => "e370f49d49484993b09d60e22fe89102.png" "baiduurl" => "http://pan.baidu.com/s/1c2IYYtE" "baidupwd" => "7njw" "description" => """ 《Ajax、JavaScripthe和PHP编程导学》详尽地介绍了如何使mAjax、JavaScript和PHP进行web开发。全书分为6个部分,包括:Web基础知识回顾、使用JavaScript Web脚本编程基础、Ajax基础、使用PHP的服务器端脚本编程、较复杂的Ajax技术、Ajax32具和资源。另外,附录列出了JavaScript、PHP和Ajax Web站点,可方便开发人员使用。\n 《Ajax.JavaScripthe和PHP编程导学》非常适合Web应用开发人员及网页设计人员参考。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文 数据目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">译者序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">前言</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第一部分 Web基础知识回顾</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 Web的运作</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 Internet简史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1.2 万维网</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.1 什么是Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.2 Web服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.3 服务器端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.4 Web浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.5 客户端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.6 DNS-域名服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 HTTP简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 HTTP请求和响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.1 HTTP请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.2 HTTP响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 HTML表单</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 用HTML和CSS编写样式化页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 HTML简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.1 什么是HTML 1</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.2 编写HTML需要什么工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.3 第一个HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 HTML页面的元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.1 文档的标题head</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.2 文档正文body</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.3 为HTML元素添加属性 4</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.4 图像</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.5 表</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.6 超链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 HTML页面更高级知识</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 一些有用的HTML标签</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 添加自己的样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 定义规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 添加一些类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8 应用样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.1 嵌入样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.2 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.3 内联样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.4 层叠优先级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9 使用样式格式化文本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.1 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.2 颜色样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.10 添加线条</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 剖析Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 为何需要Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.1 传统客户端-服务器交互和Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.2 富用户体验</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 Ajax简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 Ajax的必备部分</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.1 XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.2 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.3 服务器上发生了什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.4 处理服务器响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.5 其他常见任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 整合</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第二部分 JavaScript Web脚本编程基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 用JavaScript创建简单脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 脚本编程工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.1 文本编辑器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.2 浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 使用JavaScript显示时间</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 开始脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 添加JavaScript语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 把日期存储到变量中</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 计算结果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 创建输出</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.6 把脚本添加到Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7 测试脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.1 修改脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.2 处理JavaScript错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.3 语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.4 使用函数组合任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.5 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.6 条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.7 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.8 事件处理程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.9 哪个脚本先运行</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8 JavaScript语法规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.1 区分大小写</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.2 变量名、对象名和函数名</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.3 保留字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.4 空白</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.9 使用注释</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.10 JavaScript最佳实践</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 使用文档对象模型(DOM)</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 理解对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 理解DOM</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.1 DOM的历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.2 DOM层级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 操作Web文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.1 获取有关文档的信息</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.2 把文本写入一个文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.3 使用链接和锚点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 访问浏览器历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用location对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 使用变量、字符串和数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 使用变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 理解表达式和操作符</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 JavaScript中的数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 数据类型之间的转换</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 使用String对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 操作子字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 使用数值数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.8 使用字符串数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.9 数值数组排序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 使用函数和对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 对象简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 使用对象来简化脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 扩展内建的对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 使用条件和循环来控制流程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 if语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 使用简捷条件表达式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 使用if和else测试多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 使用带有switch的多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 使用for循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 使用while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 使用do...while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.8 使用循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.9 遍历对象属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用内建函数和库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 使用Math对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 使用Math函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 使用with关键字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 使用Date</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 使用第三方库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 其他的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第三部分 Ajax基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 Ajax的核心-XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 XMLHTTPRequest简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 创建XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送服务器请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 检测服务器状态</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 回调函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 使用返回的数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 responseText和responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 解析responseXML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 提供用户反馈</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 第一个Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 构建Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 添加JavaScript</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 综合应用</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第四部分 使用PHP的服务器端脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 认识PHP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 PHP基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 第一个PHP脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 理解变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用数值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 数值数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 数值函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 使用字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 格式化字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 字符串函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.9 使用数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.10 数组函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.11 日期格式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.12 使用时间戳</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 流程控制</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 条件语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 参数和返回值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 使用库文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 使用类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 面向对象的PHP编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 什么是类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建和使用对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第五部分 较复杂的Ajax技术</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 返回文本数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 从responseText属性获取更多</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第20章 AHAH-异步HTML和HTTP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.1 AHAH简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.2 为AHAH创建一个较小的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.3 使用myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第21章 返回XML数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.1 添加Ajax中的“x”</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.2 responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.3 项目-一个RSS新闻阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第22章 Web服务器和REST及SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.1 Web服务简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.2 REST-Representational State Transfer</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.3 使用REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.4 使用SOAP的Web服务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.5 SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.6 使用Ajax和SOAP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.7 再谈SOAP和REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.8 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第23章 用于Ajax的JavaScript库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.1 一个Ajax库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.2 回顾myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.3 实现库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.4 使用库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第24章 Ajax陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.1 常见Ajax错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.2 Back按钮</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.3 书签和链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.4 告诉用户正在发生什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.5 让Ajax优雅降级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.6 处理搜索引擎蜘蛛</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.7 指出活动页面元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.8 不要在不合适的时候使用Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.9 安全性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.10 跨多平台测试代码</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.11 Ajax不能弥补糟糕的设计</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12 一些编程陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12.3 转义内容</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第六部分 Ajax工具和资源</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第25章 prototype.js工具箱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.1 prototype.js简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.2 包装XMLHTTPRequest-Ajax对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.3 示例项目-股票价格阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第26章 使用Rico</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.1 Rico简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.2 Rico的其他界面工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第27章 使用Script.aculo.us</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.1 下载库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.2 包含文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.3 使用效果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.4 构建脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第28章 使用XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1 XOAD简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.1 下载和安装XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.2 一个简单的XOAD页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.2 XOAD HTML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.3 XOAD_HTML高级编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">附录 JavaScript、PHP和Ajax Web站点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">术语表</span></p><p><br/></p>" "frequency" => 1 "click" => 110 "dclick" => 10 "created_at" => "2019-07-30 16:37:11" "updated_at" => "2024-03-13 20:09:40" "category_name" => "php" ] ] "obLevel" => 3 "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "info" => array:14 [ "id" => 209 "category_id" => 3 "name" => "Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文PDF扫描版" "imgurl" => "e370f49d49484993b09d60e22fe89102.png" "baiduurl" => "http://pan.baidu.com/s/1c2IYYtE" "baidupwd" => "7njw" "description" => """ 《Ajax、JavaScripthe和PHP编程导学》详尽地介绍了如何使mAjax、JavaScript和PHP进行web开发。全书分为6个部分,包括:Web基础知识回顾、使用JavaScript Web脚本编程基础、Ajax基础、使用PHP的服务器端脚本编程、较复杂的Ajax技术、Ajax32具和资源。另外,附录列出了JavaScript、PHP和Ajax Web站点,可方便开发人员使用。\n 《Ajax.JavaScripthe和PHP编程导学》非常适合Web应用开发人员及网页设计人员参考。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文 数据目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">译者序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">前言</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第一部分 Web基础知识回顾</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 Web的运作</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 Internet简史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1.2 万维网</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.1 什么是Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.2 Web服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.3 服务器端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.4 Web浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.5 客户端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.6 DNS-域名服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 HTTP简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 HTTP请求和响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.1 HTTP请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.2 HTTP响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 HTML表单</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 用HTML和CSS编写样式化页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 HTML简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.1 什么是HTML 1</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.2 编写HTML需要什么工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.3 第一个HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 HTML页面的元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.1 文档的标题head</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.2 文档正文body</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.3 为HTML元素添加属性 4</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.4 图像</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.5 表</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.6 超链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 HTML页面更高级知识</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 一些有用的HTML标签</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 添加自己的样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 定义规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 添加一些类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8 应用样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.1 嵌入样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.2 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.3 内联样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.4 层叠优先级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9 使用样式格式化文本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.1 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.2 颜色样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.10 添加线条</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 剖析Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 为何需要Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.1 传统客户端-服务器交互和Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.2 富用户体验</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 Ajax简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 Ajax的必备部分</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.1 XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.2 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.3 服务器上发生了什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.4 处理服务器响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.5 其他常见任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 整合</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第二部分 JavaScript Web脚本编程基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 用JavaScript创建简单脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 脚本编程工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.1 文本编辑器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.2 浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 使用JavaScript显示时间</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 开始脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 添加JavaScript语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 把日期存储到变量中</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 计算结果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 创建输出</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.6 把脚本添加到Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7 测试脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.1 修改脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.2 处理JavaScript错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.3 语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.4 使用函数组合任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.5 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.6 条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.7 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.8 事件处理程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.9 哪个脚本先运行</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8 JavaScript语法规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.1 区分大小写</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.2 变量名、对象名和函数名</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.3 保留字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.4 空白</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.9 使用注释</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.10 JavaScript最佳实践</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 使用文档对象模型(DOM)</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 理解对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 理解DOM</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.1 DOM的历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.2 DOM层级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 操作Web文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.1 获取有关文档的信息</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.2 把文本写入一个文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.3 使用链接和锚点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 访问浏览器历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用location对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 使用变量、字符串和数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 使用变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 理解表达式和操作符</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 JavaScript中的数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 数据类型之间的转换</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 使用String对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 操作子字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 使用数值数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.8 使用字符串数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.9 数值数组排序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 使用函数和对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 对象简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 使用对象来简化脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 扩展内建的对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 使用条件和循环来控制流程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 if语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 使用简捷条件表达式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 使用if和else测试多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 使用带有switch的多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 使用for循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 使用while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 使用do...while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.8 使用循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.9 遍历对象属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用内建函数和库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 使用Math对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 使用Math函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 使用with关键字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 使用Date</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 使用第三方库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 其他的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第三部分 Ajax基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 Ajax的核心-XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 XMLHTTPRequest简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 创建XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送服务器请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 检测服务器状态</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 回调函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 使用返回的数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 responseText和responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 解析responseXML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 提供用户反馈</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 第一个Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 构建Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 添加JavaScript</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 综合应用</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第四部分 使用PHP的服务器端脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 认识PHP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 PHP基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 第一个PHP脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 理解变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用数值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 数值数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 数值函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 使用字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 格式化字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 字符串函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.9 使用数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.10 数组函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.11 日期格式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.12 使用时间戳</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 流程控制</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 条件语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 参数和返回值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 使用库文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 使用类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 面向对象的PHP编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 什么是类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建和使用对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第五部分 较复杂的Ajax技术</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 返回文本数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 从responseText属性获取更多</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第20章 AHAH-异步HTML和HTTP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.1 AHAH简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.2 为AHAH创建一个较小的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.3 使用myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第21章 返回XML数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.1 添加Ajax中的“x”</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.2 responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.3 项目-一个RSS新闻阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第22章 Web服务器和REST及SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.1 Web服务简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.2 REST-Representational State Transfer</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.3 使用REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.4 使用SOAP的Web服务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.5 SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.6 使用Ajax和SOAP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.7 再谈SOAP和REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.8 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第23章 用于Ajax的JavaScript库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.1 一个Ajax库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.2 回顾myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.3 实现库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.4 使用库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第24章 Ajax陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.1 常见Ajax错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.2 Back按钮</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.3 书签和链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.4 告诉用户正在发生什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.5 让Ajax优雅降级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.6 处理搜索引擎蜘蛛</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.7 指出活动页面元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.8 不要在不合适的时候使用Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.9 安全性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.10 跨多平台测试代码</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.11 Ajax不能弥补糟糕的设计</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12 一些编程陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12.3 转义内容</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第六部分 Ajax工具和资源</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第25章 prototype.js工具箱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.1 prototype.js简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.2 包装XMLHTTPRequest-Ajax对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.3 示例项目-股票价格阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第26章 使用Rico</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.1 Rico简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.2 Rico的其他界面工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第27章 使用Script.aculo.us</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.1 下载库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.2 包含文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.3 使用效果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.4 构建脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第28章 使用XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1 XOAD简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.1 下载和安装XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.2 一个简单的XOAD页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.2 XOAD HTML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.3 XOAD_HTML高级编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">附录 JavaScript、PHP和Ajax Web站点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">术语表</span></p><p><br/></p>" "frequency" => 1 "click" => 110 "dclick" => 10 "created_at" => "2019-07-30 16:37:11" "updated_at" => "2024-03-13 20:09:40" "category_name" => "php" ] ]
/** * Get the evaluated contents of the view at the given path. * * @param string $__path * @param array $__data * @return string */ protected function evaluatePath($__path, $__data) { $obLevel = ob_get_level(); ob_start(); extract($__data, EXTR_SKIP); // We'll evaluate the contents of the view inside a try/catch block so we can // flush out any stray output that might get out before an error occurs or // an exception is thrown. This prevents any partial views from leaking. try { include $__path; } catch (Exception $e) { $this->handleViewException($e, $obLevel); } catch (Throwable $e) { $this->handleViewException(new FatalThrowableError($e), $obLevel); } return ltrim(ob_get_clean()); } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) {
"/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php"
* @param array $data * @return string */ public function get($path, array $data = []) { $this->lastCompiled[] = $path; // If this given view has expired, which means it has simply been edited since // it was last compiled, we will re-compile the views so we can evaluate a // fresh copy of the view. We'll pass the compiler the path of the view. if ($this->compiler->isExpired($path)) { $this->compiler->compile($path); } $compiled = $this->compiler->getCompiledPath($path); // Once we have the path to the compiled file, we will evaluate the paths with // typical PHP just like any other templates. We also keep a stack of views // which have been rendered for right exception messages to be generated. $results = $this->evaluatePath($compiled, $data); array_pop($this->lastCompiled); return $results; } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) { $e = new ErrorException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e); parent::handleViewException($e, $obLevel);
"/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php"
array:6 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "obLevel" => 1 "info" => array:14 [ "id" => 209 "category_id" => 3 "name" => "Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文PDF扫描版" "imgurl" => "e370f49d49484993b09d60e22fe89102.png" "baiduurl" => "http://pan.baidu.com/s/1c2IYYtE" "baidupwd" => "7njw" "description" => """ 《Ajax、JavaScripthe和PHP编程导学》详尽地介绍了如何使mAjax、JavaScript和PHP进行web开发。全书分为6个部分,包括:Web基础知识回顾、使用JavaScript Web脚本编程基础、Ajax基础、使用PHP的服务器端脚本编程、较复杂的Ajax技术、Ajax32具和资源。另外,附录列出了JavaScript、PHP和Ajax Web站点,可方便开发人员使用。\n 《Ajax.JavaScripthe和PHP编程导学》非常适合Web应用开发人员及网页设计人员参考。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文 数据目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">译者序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">前言</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第一部分 Web基础知识回顾</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 Web的运作</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 Internet简史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1.2 万维网</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.1 什么是Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.2 Web服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.3 服务器端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.4 Web浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.5 客户端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.6 DNS-域名服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 HTTP简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 HTTP请求和响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.1 HTTP请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.2 HTTP响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 HTML表单</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 用HTML和CSS编写样式化页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 HTML简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.1 什么是HTML 1</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.2 编写HTML需要什么工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.3 第一个HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 HTML页面的元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.1 文档的标题head</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.2 文档正文body</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.3 为HTML元素添加属性 4</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.4 图像</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.5 表</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.6 超链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 HTML页面更高级知识</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 一些有用的HTML标签</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 添加自己的样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 定义规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 添加一些类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8 应用样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.1 嵌入样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.2 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.3 内联样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.4 层叠优先级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9 使用样式格式化文本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.1 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.2 颜色样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.10 添加线条</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 剖析Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 为何需要Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.1 传统客户端-服务器交互和Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.2 富用户体验</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 Ajax简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 Ajax的必备部分</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.1 XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.2 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.3 服务器上发生了什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.4 处理服务器响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.5 其他常见任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 整合</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第二部分 JavaScript Web脚本编程基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 用JavaScript创建简单脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 脚本编程工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.1 文本编辑器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.2 浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 使用JavaScript显示时间</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 开始脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 添加JavaScript语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 把日期存储到变量中</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 计算结果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 创建输出</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.6 把脚本添加到Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7 测试脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.1 修改脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.2 处理JavaScript错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.3 语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.4 使用函数组合任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.5 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.6 条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.7 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.8 事件处理程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.9 哪个脚本先运行</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8 JavaScript语法规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.1 区分大小写</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.2 变量名、对象名和函数名</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.3 保留字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.4 空白</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.9 使用注释</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.10 JavaScript最佳实践</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 使用文档对象模型(DOM)</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 理解对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 理解DOM</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.1 DOM的历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.2 DOM层级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 操作Web文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.1 获取有关文档的信息</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.2 把文本写入一个文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.3 使用链接和锚点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 访问浏览器历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用location对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 使用变量、字符串和数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 使用变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 理解表达式和操作符</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 JavaScript中的数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 数据类型之间的转换</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 使用String对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 操作子字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 使用数值数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.8 使用字符串数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.9 数值数组排序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 使用函数和对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 对象简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 使用对象来简化脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 扩展内建的对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 使用条件和循环来控制流程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 if语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 使用简捷条件表达式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 使用if和else测试多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 使用带有switch的多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 使用for循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 使用while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 使用do...while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.8 使用循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.9 遍历对象属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用内建函数和库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 使用Math对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 使用Math函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 使用with关键字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 使用Date</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 使用第三方库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 其他的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第三部分 Ajax基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 Ajax的核心-XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 XMLHTTPRequest简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 创建XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送服务器请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 检测服务器状态</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 回调函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 使用返回的数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 responseText和responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 解析responseXML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 提供用户反馈</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 第一个Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 构建Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 添加JavaScript</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 综合应用</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第四部分 使用PHP的服务器端脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 认识PHP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 PHP基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 第一个PHP脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 理解变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用数值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 数值数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 数值函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 使用字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 格式化字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 字符串函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.9 使用数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.10 数组函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.11 日期格式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.12 使用时间戳</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 流程控制</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 条件语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 参数和返回值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 使用库文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 使用类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 面向对象的PHP编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 什么是类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建和使用对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第五部分 较复杂的Ajax技术</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 返回文本数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 从responseText属性获取更多</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第20章 AHAH-异步HTML和HTTP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.1 AHAH简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.2 为AHAH创建一个较小的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.3 使用myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第21章 返回XML数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.1 添加Ajax中的“x”</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.2 responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.3 项目-一个RSS新闻阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第22章 Web服务器和REST及SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.1 Web服务简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.2 REST-Representational State Transfer</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.3 使用REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.4 使用SOAP的Web服务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.5 SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.6 使用Ajax和SOAP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.7 再谈SOAP和REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.8 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第23章 用于Ajax的JavaScript库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.1 一个Ajax库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.2 回顾myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.3 实现库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.4 使用库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第24章 Ajax陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.1 常见Ajax错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.2 Back按钮</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.3 书签和链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.4 告诉用户正在发生什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.5 让Ajax优雅降级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.6 处理搜索引擎蜘蛛</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.7 指出活动页面元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.8 不要在不合适的时候使用Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.9 安全性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.10 跨多平台测试代码</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.11 Ajax不能弥补糟糕的设计</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12 一些编程陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12.3 转义内容</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第六部分 Ajax工具和资源</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第25章 prototype.js工具箱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.1 prototype.js简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.2 包装XMLHTTPRequest-Ajax对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.3 示例项目-股票价格阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第26章 使用Rico</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.1 Rico简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.2 Rico的其他界面工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第27章 使用Script.aculo.us</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.1 下载库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.2 包含文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.3 使用效果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.4 构建脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第28章 使用XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1 XOAD简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.1 下载和安装XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.2 一个简单的XOAD页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.2 XOAD HTML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.3 XOAD_HTML高级编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">附录 JavaScript、PHP和Ajax Web站点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">术语表</span></p><p><br/></p>" "frequency" => 1 "click" => 110 "dclick" => 10 "created_at" => "2019-07-30 16:37:11" "updated_at" => "2024-03-13 20:09:40" "category_name" => "php" ] ]
$this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /** * Get the data bound to the view instance. * * @return array */ protected function gatherData() { $data = array_merge($this->factory->getShared(), $this->data); foreach ($data as $key => $value) { if ($value instanceof Renderable) { $data[$key] = $value->render(); } } return $data; }
"/www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php"
array:6 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "obLevel" => 1 "info" => array:14 [ "id" => 209 "category_id" => 3 "name" => "Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文PDF扫描版" "imgurl" => "e370f49d49484993b09d60e22fe89102.png" "baiduurl" => "http://pan.baidu.com/s/1c2IYYtE" "baidupwd" => "7njw" "description" => """ 《Ajax、JavaScripthe和PHP编程导学》详尽地介绍了如何使mAjax、JavaScript和PHP进行web开发。全书分为6个部分,包括:Web基础知识回顾、使用JavaScript Web脚本编程基础、Ajax基础、使用PHP的服务器端脚本编程、较复杂的Ajax技术、Ajax32具和资源。另外,附录列出了JavaScript、PHP和Ajax Web站点,可方便开发人员使用。\n 《Ajax.JavaScripthe和PHP编程导学》非常适合Web应用开发人员及网页设计人员参考。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文 数据目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">译者序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">前言</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第一部分 Web基础知识回顾</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 Web的运作</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 Internet简史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1.2 万维网</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.1 什么是Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.2 Web服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.3 服务器端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.4 Web浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.5 客户端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.6 DNS-域名服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 HTTP简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 HTTP请求和响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.1 HTTP请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.2 HTTP响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 HTML表单</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 用HTML和CSS编写样式化页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 HTML简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.1 什么是HTML 1</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.2 编写HTML需要什么工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.3 第一个HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 HTML页面的元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.1 文档的标题head</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.2 文档正文body</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.3 为HTML元素添加属性 4</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.4 图像</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.5 表</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.6 超链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 HTML页面更高级知识</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 一些有用的HTML标签</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 添加自己的样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 定义规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 添加一些类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8 应用样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.1 嵌入样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.2 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.3 内联样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.4 层叠优先级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9 使用样式格式化文本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.1 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.2 颜色样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.10 添加线条</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 剖析Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 为何需要Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.1 传统客户端-服务器交互和Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.2 富用户体验</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 Ajax简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 Ajax的必备部分</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.1 XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.2 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.3 服务器上发生了什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.4 处理服务器响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.5 其他常见任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 整合</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第二部分 JavaScript Web脚本编程基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 用JavaScript创建简单脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 脚本编程工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.1 文本编辑器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.2 浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 使用JavaScript显示时间</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 开始脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 添加JavaScript语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 把日期存储到变量中</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 计算结果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 创建输出</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.6 把脚本添加到Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7 测试脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.1 修改脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.2 处理JavaScript错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.3 语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.4 使用函数组合任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.5 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.6 条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.7 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.8 事件处理程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.9 哪个脚本先运行</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8 JavaScript语法规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.1 区分大小写</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.2 变量名、对象名和函数名</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.3 保留字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.4 空白</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.9 使用注释</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.10 JavaScript最佳实践</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 使用文档对象模型(DOM)</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 理解对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 理解DOM</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.1 DOM的历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.2 DOM层级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 操作Web文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.1 获取有关文档的信息</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.2 把文本写入一个文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.3 使用链接和锚点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 访问浏览器历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用location对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 使用变量、字符串和数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 使用变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 理解表达式和操作符</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 JavaScript中的数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 数据类型之间的转换</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 使用String对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 操作子字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 使用数值数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.8 使用字符串数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.9 数值数组排序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 使用函数和对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 对象简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 使用对象来简化脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 扩展内建的对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 使用条件和循环来控制流程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 if语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 使用简捷条件表达式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 使用if和else测试多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 使用带有switch的多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 使用for循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 使用while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 使用do...while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.8 使用循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.9 遍历对象属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用内建函数和库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 使用Math对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 使用Math函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 使用with关键字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 使用Date</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 使用第三方库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 其他的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第三部分 Ajax基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 Ajax的核心-XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 XMLHTTPRequest简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 创建XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送服务器请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 检测服务器状态</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 回调函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 使用返回的数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 responseText和responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 解析responseXML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 提供用户反馈</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 第一个Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 构建Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 添加JavaScript</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 综合应用</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第四部分 使用PHP的服务器端脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 认识PHP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 PHP基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 第一个PHP脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 理解变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用数值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 数值数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 数值函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 使用字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 格式化字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 字符串函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.9 使用数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.10 数组函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.11 日期格式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.12 使用时间戳</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 流程控制</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 条件语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 参数和返回值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 使用库文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 使用类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 面向对象的PHP编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 什么是类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建和使用对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第五部分 较复杂的Ajax技术</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 返回文本数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 从responseText属性获取更多</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第20章 AHAH-异步HTML和HTTP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.1 AHAH简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.2 为AHAH创建一个较小的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.3 使用myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第21章 返回XML数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.1 添加Ajax中的“x”</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.2 responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.3 项目-一个RSS新闻阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第22章 Web服务器和REST及SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.1 Web服务简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.2 REST-Representational State Transfer</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.3 使用REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.4 使用SOAP的Web服务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.5 SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.6 使用Ajax和SOAP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.7 再谈SOAP和REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.8 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第23章 用于Ajax的JavaScript库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.1 一个Ajax库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.2 回顾myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.3 实现库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.4 使用库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第24章 Ajax陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.1 常见Ajax错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.2 Back按钮</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.3 书签和链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.4 告诉用户正在发生什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.5 让Ajax优雅降级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.6 处理搜索引擎蜘蛛</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.7 指出活动页面元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.8 不要在不合适的时候使用Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.9 安全性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.10 跨多平台测试代码</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.11 Ajax不能弥补糟糕的设计</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12 一些编程陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12.3 转义内容</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第六部分 Ajax工具和资源</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第25章 prototype.js工具箱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.1 prototype.js简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.2 包装XMLHTTPRequest-Ajax对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.3 示例项目-股票价格阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第26章 使用Rico</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.1 Rico简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.2 Rico的其他界面工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第27章 使用Script.aculo.us</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.1 下载库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.2 包含文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.3 使用效果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.4 构建脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第28章 使用XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1 XOAD简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.1 下载和安装XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.2 一个简单的XOAD页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.2 XOAD HTML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.3 XOAD_HTML高级编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">附录 JavaScript、PHP和Ajax Web站点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">术语表</span></p><p><br/></p>" "frequency" => 1 "click" => 110 "dclick" => 10 "created_at" => "2019-07-30 16:37:11" "updated_at" => "2024-03-13 20:09:40" "category_name" => "php" ] ]
throw $e; } } /** * Get the contents of the view instance. * * @return string */ protected function renderContents() { // We will keep track of the amount of views being rendered so we can flush // the section after the complete rendering operation is done. This will // clear out the sections for any separate views that may be rendered. $this->factory->incrementRender(); $this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /**
$this->view = $view; $this->path = $path; $this->engine = $engine; $this->factory = $factory; $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data; } /** * Get the string contents of the view. * * @param callable|null $callback * @return string * * @throws \Throwable */ public function render(callable $callback = null) { try { $contents = $this->renderContents(); $response = isset($callback) ? call_user_func($callback, $this, $contents) : null; // Once we have the contents of the view, we will flush the sections if we are // done rendering all views so that there is nothing left hanging over when // another view gets rendered in the future by the application developer. $this->factory->flushStateIfDoneRendering(); return ! is_null($response) ? $response : $contents; } catch (Exception $e) { $this->factory->flushState(); throw $e; } catch (Throwable $e) { $this->factory->flushState(); throw $e; } }
<?php $__env->startSection('header'); ?> <?php echo $__env->make('home/components/header', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('nav'); ?> <?php echo $__env->make('home/components/nav', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('sub-nav'); ?> <?php echo $__env->make('home/components/sub-nav', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('content'); ?> <div class="layui-col-md8 content detail"> <div class="fly-panel detail-box"> <h1><?php echo e($info['name']); ?></h1> <div class="fly-detail-info"> <a href="<?php echo e(path('ebook', ['cid' => $info['category_id']])); ?>"> <span class="layui-badge layui-bg-red"><?php echo e($info['category_name']); ?></span> </a> <span class="fly-list-nums"> <a href="#comment"><i class="iconfont" title="回答"></i> 66</a> <i class="iconfont" title="人气"></i> <?php echo e($info['click']); ?> </span> </div> <div class="detail-about" style="padding-left: 15px;color: #FF7200"><?php echo e($info['description']); ?></div> <pre>#下载地址:<a href="<?php echo e($info['baiduurl']); ?>">百度云下载</a> 密码: <?php echo e($info['baidupwd']); ?></pre> <div class="detail-body photos"> <pre><p><?php echo $info['content']; ?></p></pre> </div> </div> <?php echo $__env->make('home/components/comment', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> </div> <?php $__env->stopSection(); ?> <?php $__env->startSection('hot-right'); ?> <?php echo $__env->make('home/components/hot-right', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('sign'); ?> <!-- <?php echo $__env->make('home/components/sign', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> --> <?php $__env->stopSection(); ?> <?php $__env->startSection('imglogo-right'); ?> <!-- <?php echo $__env->make('home/components/imglogo-right', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> -->
/** * Get the evaluated contents of the view at the given path. * * @param string $__path * @param array $__data * @return string */ protected function evaluatePath($__path, $__data) { $obLevel = ob_get_level(); ob_start(); extract($__data, EXTR_SKIP); // We'll evaluate the contents of the view inside a try/catch block so we can // flush out any stray output that might get out before an error occurs or // an exception is thrown. This prevents any partial views from leaking. try { include $__path; } catch (Exception $e) { $this->handleViewException($e, $obLevel); } catch (Throwable $e) { $this->handleViewException(new FatalThrowableError($e), $obLevel); } return ltrim(ob_get_clean()); } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) {
"/www/wwwroot/www.h5tpl.com/storage/framework/views/0a3e26761f636faef770193c4379a3ee2c6dba9d.php"
* @param array $data * @return string */ public function get($path, array $data = []) { $this->lastCompiled[] = $path; // If this given view has expired, which means it has simply been edited since // it was last compiled, we will re-compile the views so we can evaluate a // fresh copy of the view. We'll pass the compiler the path of the view. if ($this->compiler->isExpired($path)) { $this->compiler->compile($path); } $compiled = $this->compiler->getCompiledPath($path); // Once we have the path to the compiled file, we will evaluate the paths with // typical PHP just like any other templates. We also keep a stack of views // which have been rendered for right exception messages to be generated. $results = $this->evaluatePath($compiled, $data); array_pop($this->lastCompiled); return $results; } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) { $e = new ErrorException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e); parent::handleViewException($e, $obLevel);
"/www/wwwroot/www.h5tpl.com/storage/framework/views/0a3e26761f636faef770193c4379a3ee2c6dba9d.php"
array:5 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "info" => array:14 [ "id" => 209 "category_id" => 3 "name" => "Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文PDF扫描版" "imgurl" => "e370f49d49484993b09d60e22fe89102.png" "baiduurl" => "http://pan.baidu.com/s/1c2IYYtE" "baidupwd" => "7njw" "description" => """ 《Ajax、JavaScripthe和PHP编程导学》详尽地介绍了如何使mAjax、JavaScript和PHP进行web开发。全书分为6个部分,包括:Web基础知识回顾、使用JavaScript Web脚本编程基础、Ajax基础、使用PHP的服务器端脚本编程、较复杂的Ajax技术、Ajax32具和资源。另外,附录列出了JavaScript、PHP和Ajax Web站点,可方便开发人员使用。\n 《Ajax.JavaScripthe和PHP编程导学》非常适合Web应用开发人员及网页设计人员参考。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文 数据目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">译者序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">前言</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第一部分 Web基础知识回顾</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 Web的运作</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 Internet简史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1.2 万维网</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.1 什么是Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.2 Web服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.3 服务器端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.4 Web浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.5 客户端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.6 DNS-域名服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 HTTP简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 HTTP请求和响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.1 HTTP请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.2 HTTP响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 HTML表单</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 用HTML和CSS编写样式化页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 HTML简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.1 什么是HTML 1</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.2 编写HTML需要什么工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.3 第一个HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 HTML页面的元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.1 文档的标题head</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.2 文档正文body</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.3 为HTML元素添加属性 4</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.4 图像</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.5 表</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.6 超链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 HTML页面更高级知识</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 一些有用的HTML标签</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 添加自己的样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 定义规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 添加一些类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8 应用样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.1 嵌入样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.2 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.3 内联样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.4 层叠优先级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9 使用样式格式化文本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.1 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.2 颜色样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.10 添加线条</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 剖析Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 为何需要Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.1 传统客户端-服务器交互和Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.2 富用户体验</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 Ajax简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 Ajax的必备部分</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.1 XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.2 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.3 服务器上发生了什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.4 处理服务器响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.5 其他常见任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 整合</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第二部分 JavaScript Web脚本编程基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 用JavaScript创建简单脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 脚本编程工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.1 文本编辑器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.2 浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 使用JavaScript显示时间</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 开始脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 添加JavaScript语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 把日期存储到变量中</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 计算结果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 创建输出</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.6 把脚本添加到Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7 测试脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.1 修改脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.2 处理JavaScript错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.3 语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.4 使用函数组合任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.5 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.6 条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.7 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.8 事件处理程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.9 哪个脚本先运行</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8 JavaScript语法规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.1 区分大小写</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.2 变量名、对象名和函数名</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.3 保留字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.4 空白</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.9 使用注释</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.10 JavaScript最佳实践</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 使用文档对象模型(DOM)</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 理解对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 理解DOM</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.1 DOM的历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.2 DOM层级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 操作Web文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.1 获取有关文档的信息</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.2 把文本写入一个文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.3 使用链接和锚点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 访问浏览器历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用location对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 使用变量、字符串和数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 使用变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 理解表达式和操作符</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 JavaScript中的数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 数据类型之间的转换</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 使用String对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 操作子字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 使用数值数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.8 使用字符串数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.9 数值数组排序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 使用函数和对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 对象简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 使用对象来简化脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 扩展内建的对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 使用条件和循环来控制流程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 if语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 使用简捷条件表达式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 使用if和else测试多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 使用带有switch的多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 使用for循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 使用while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 使用do...while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.8 使用循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.9 遍历对象属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用内建函数和库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 使用Math对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 使用Math函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 使用with关键字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 使用Date</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 使用第三方库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 其他的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第三部分 Ajax基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 Ajax的核心-XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 XMLHTTPRequest简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 创建XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送服务器请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 检测服务器状态</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 回调函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 使用返回的数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 responseText和responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 解析responseXML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 提供用户反馈</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 第一个Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 构建Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 添加JavaScript</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 综合应用</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第四部分 使用PHP的服务器端脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 认识PHP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 PHP基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 第一个PHP脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 理解变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用数值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 数值数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 数值函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 使用字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 格式化字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 字符串函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.9 使用数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.10 数组函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.11 日期格式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.12 使用时间戳</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 流程控制</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 条件语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 参数和返回值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 使用库文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 使用类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 面向对象的PHP编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 什么是类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建和使用对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第五部分 较复杂的Ajax技术</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 返回文本数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 从responseText属性获取更多</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第20章 AHAH-异步HTML和HTTP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.1 AHAH简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.2 为AHAH创建一个较小的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.3 使用myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第21章 返回XML数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.1 添加Ajax中的“x”</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.2 responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.3 项目-一个RSS新闻阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第22章 Web服务器和REST及SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.1 Web服务简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.2 REST-Representational State Transfer</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.3 使用REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.4 使用SOAP的Web服务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.5 SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.6 使用Ajax和SOAP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.7 再谈SOAP和REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.8 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第23章 用于Ajax的JavaScript库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.1 一个Ajax库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.2 回顾myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.3 实现库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.4 使用库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第24章 Ajax陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.1 常见Ajax错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.2 Back按钮</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.3 书签和链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.4 告诉用户正在发生什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.5 让Ajax优雅降级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.6 处理搜索引擎蜘蛛</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.7 指出活动页面元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.8 不要在不合适的时候使用Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.9 安全性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.10 跨多平台测试代码</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.11 Ajax不能弥补糟糕的设计</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12 一些编程陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12.3 转义内容</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第六部分 Ajax工具和资源</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第25章 prototype.js工具箱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.1 prototype.js简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.2 包装XMLHTTPRequest-Ajax对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.3 示例项目-股票价格阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第26章 使用Rico</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.1 Rico简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.2 Rico的其他界面工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第27章 使用Script.aculo.us</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.1 下载库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.2 包含文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.3 使用效果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.4 构建脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第28章 使用XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1 XOAD简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.1 下载和安装XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.2 一个简单的XOAD页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.2 XOAD HTML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.3 XOAD_HTML高级编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">附录 JavaScript、PHP和Ajax Web站点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">术语表</span></p><p><br/></p>" "frequency" => 1 "click" => 110 "dclick" => 10 "created_at" => "2019-07-30 16:37:11" "updated_at" => "2024-03-13 20:09:40" "category_name" => "php" ] ]
$this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /** * Get the data bound to the view instance. * * @return array */ protected function gatherData() { $data = array_merge($this->factory->getShared(), $this->data); foreach ($data as $key => $value) { if ($value instanceof Renderable) { $data[$key] = $value->render(); } } return $data; }
"/www/wwwroot/www.h5tpl.com/resources/views/home/ebook/detail.blade.php"
array:5 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "info" => array:14 [ "id" => 209 "category_id" => 3 "name" => "Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文PDF扫描版" "imgurl" => "e370f49d49484993b09d60e22fe89102.png" "baiduurl" => "http://pan.baidu.com/s/1c2IYYtE" "baidupwd" => "7njw" "description" => """ 《Ajax、JavaScripthe和PHP编程导学》详尽地介绍了如何使mAjax、JavaScript和PHP进行web开发。全书分为6个部分,包括:Web基础知识回顾、使用JavaScript Web脚本编程基础、Ajax基础、使用PHP的服务器端脚本编程、较复杂的Ajax技术、Ajax32具和资源。另外,附录列出了JavaScript、PHP和Ajax Web站点,可方便开发人员使用。\n 《Ajax.JavaScripthe和PHP编程导学》非常适合Web应用开发人员及网页设计人员参考。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">Ajax、JavaScript和PHP编程导学 ((英)Phil Ballard) 中文 数据目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">译者序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">前言</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第一部分 Web基础知识回顾</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 Web的运作</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 Internet简史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1.2 万维网</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.1 什么是Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.2 Web服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.3 服务器端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.4 Web浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.5 客户端编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2.6 DNS-域名服务器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 HTTP简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 HTTP请求和响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.1 HTTP请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4.2 HTTP响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 HTML表单</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 用HTML和CSS编写样式化页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 HTML简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.1 什么是HTML 1</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.2 编写HTML需要什么工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1.3 第一个HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 HTML页面的元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.1 文档的标题head</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.2 文档正文body</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.3 为HTML元素添加属性 4</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.4 图像</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.5 表</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2.6 超链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 HTML页面更高级知识</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 一些有用的HTML标签</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 添加自己的样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 定义规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 添加一些类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8 应用样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.1 嵌入样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.2 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.3 内联样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.8.4 层叠优先级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9 使用样式格式化文本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.1 链接样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.9.2 颜色样式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.10 添加线条</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 剖析Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 为何需要Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.1 传统客户端-服务器交互和Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1.2 富用户体验</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 Ajax简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 Ajax的必备部分</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.1 XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.2 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.3 服务器上发生了什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.4 处理服务器响应</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3.5 其他常见任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 整合</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第二部分 JavaScript Web脚本编程基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 用JavaScript创建简单脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 脚本编程工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.1 文本编辑器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1.2 浏览器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 使用JavaScript显示时间</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 开始脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 添加JavaScript语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 把日期存储到变量中</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 计算结果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 创建输出</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.6 把脚本添加到Web页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7 测试脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.1 修改脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.2 处理JavaScript错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.3 语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.4 使用函数组合任务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.5 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.6 条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.7 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.8 事件处理程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.7.9 哪个脚本先运行</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8 JavaScript语法规则</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.1 区分大小写</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.2 变量名、对象名和函数名</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.3 保留字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.8.4 空白</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.9 使用注释</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.10 JavaScript最佳实践</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.11 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 使用文档对象模型(DOM)</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 理解对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 理解DOM</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.1 DOM的历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2.2 DOM层级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 操作Web文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.1 获取有关文档的信息</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.2 把文本写入一个文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3.3 使用链接和锚点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 访问浏览器历史</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用location对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 使用变量、字符串和数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 使用变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 理解表达式和操作符</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 JavaScript中的数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 数据类型之间的转换</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 使用String对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 操作子字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 使用数值数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.8 使用字符串数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.9 数值数组排序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 使用函数和对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 对象简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 使用对象来简化脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 扩展内建的对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 使用条件和循环来控制流程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 if语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 使用简捷条件表达式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 使用if和else测试多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 使用带有switch的多个条件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 使用for循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 使用while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 使用do...while循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.8 使用循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.9 遍历对象属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.10 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用内建函数和库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 使用Math对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 使用Math函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 使用with关键字</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 使用Date</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 使用第三方库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 其他的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第三部分 Ajax基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 Ajax的核心-XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 XMLHTTPRequest简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 创建XMLHTTPRequest对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 与服务器通信</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送服务器请求</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 检测服务器状态</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 回调函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 使用返回的数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 responseText和responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 解析responseXML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 提供用户反馈</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 第一个Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 构建Ajax应用程序</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 HTML文档</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 添加JavaScript</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 综合应用</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第四部分 使用PHP的服务器端脚本编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 认识PHP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 PHP基础</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 第一个PHP脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 理解变量</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用数值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 数值数据类型</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 数值函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 使用字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 格式化字符串</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 字符串函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.9 使用数组</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.10 数组函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.11 日期格式</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.12 使用时间戳</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 流程控制</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 条件语句</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 循环</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 使用函数</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 参数和返回值</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 使用库文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 使用类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 面向对象的PHP编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 什么是类</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建和使用对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第五部分 较复杂的Ajax技术</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 返回文本数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 从responseText属性获取更多</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第20章 AHAH-异步HTML和HTTP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.1 AHAH简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.2 为AHAH创建一个较小的库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.3 使用myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">20.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第21章 返回XML数据</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.1 添加Ajax中的“x”</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.2 responseXML属性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.3 项目-一个RSS新闻阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">21.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第22章 Web服务器和REST及SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.1 Web服务简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.2 REST-Representational State Transfer</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.3 使用REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.4 使用SOAP的Web服务</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.5 SOAP协议</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.6 使用Ajax和SOAP</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.7 再谈SOAP和REST</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">22.8 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第23章 用于Ajax的JavaScript库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.1 一个Ajax库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.2 回顾myAHAHlib.js</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.3 实现库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.4 使用库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">23.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第24章 Ajax陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.1 常见Ajax错误</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.2 Back按钮</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.3 书签和链接</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.4 告诉用户正在发生什么</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.5 让Ajax优雅降级</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.6 处理搜索引擎蜘蛛</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.7 指出活动页面元素</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.8 不要在不合适的时候使用Ajax</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.9 安全性</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.10 跨多平台测试代码</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.11 Ajax不能弥补糟糕的设计</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12 一些编程陷阱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.12.3 转义内容</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">24.13 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第六部分 Ajax工具和资源</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第25章 prototype.js工具箱</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.1 prototype.js简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.2 包装XMLHTTPRequest-Ajax对象</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.3 示例项目-股票价格阅读器</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">25.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第26章 使用Rico</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.1 Rico简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.2 Rico的其他界面工具</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">26.3 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第27章 使用Script.aculo.us</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.1 下载库</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.2 包含文件</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.3 使用效果</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.4 构建脚本</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">27.5 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第28章 使用XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1 XOAD简介</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.1 下载和安装XOAD</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.1.2 一个简单的XOAD页面</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.2 XOAD HTML</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.3 XOAD_HTML高级编程</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">28.4 小结</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">附录 JavaScript、PHP和Ajax Web站点</span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">术语表</span></p><p><br/></p>" "frequency" => 1 "click" => 110 "dclick" => 10 "created_at" => "2019-07-30 16:37:11" "updated_at" => "2024-03-13 20:09:40" "category_name" => "php" ] ]
throw $e; } } /** * Get the contents of the view instance. * * @return string */ protected function renderContents() { // We will keep track of the amount of views being rendered so we can flush // the section after the complete rendering operation is done. This will // clear out the sections for any separate views that may be rendered. $this->factory->incrementRender(); $this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /**
$this->view = $view; $this->path = $path; $this->engine = $engine; $this->factory = $factory; $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data; } /** * Get the string contents of the view. * * @param callable|null $callback * @return string * * @throws \Throwable */ public function render(callable $callback = null) { try { $contents = $this->renderContents(); $response = isset($callback) ? call_user_func($callback, $this, $contents) : null; // Once we have the contents of the view, we will flush the sections if we are // done rendering all views so that there is nothing left hanging over when // another view gets rendered in the future by the application developer. $this->factory->flushStateIfDoneRendering(); return ! is_null($response) ? $response : $contents; } catch (Exception $e) { $this->factory->flushState(); throw $e; } catch (Throwable $e) { $this->factory->flushState(); throw $e; } }
* @return $this */ public function setContent($content) { $this->original = $content; // If the content is "JSONable" we will set the appropriate header and convert // the content to JSON. This is useful when returning something like models // from routes that will be automatically transformed to their JSON form. if ($this->shouldBeJson($content)) { $this->header('Content-Type', 'application/json'); $content = $this->morphToJson($content); } // If this content implements the "Renderable" interface then we will call the // render method on the object so we will avoid any "__toString" exceptions // that might be thrown and have their errors obscured by PHP's handling. elseif ($content instanceof Renderable) { $content = $content->render(); } parent::setContent($content); return $this; } /** * Determine if the given content should be turned into JSON. * * @param mixed $content * @return bool */ protected function shouldBeJson($content) { return $content instanceof Arrayable || $content instanceof Jsonable || $content instanceof ArrayObject || $content instanceof JsonSerializable || is_array($content);
504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', // RFC2295 507 => 'Insufficient Storage', // RFC4918 508 => 'Loop Detected', // RFC5842 510 => 'Not Extended', // RFC2774 511 => 'Network Authentication Required', // RFC6585 ]; /** * @param mixed $content The response content, see setContent() * @param int $status The response status code * @param array $headers An array of response headers * * @throws \InvalidArgumentException When the HTTP status code is not valid */ public function __construct($content = '', $status = 200, $headers = []) { $this->headers = new ResponseHeaderBag($headers); $this->setContent($content); $this->setStatusCode($status); $this->setProtocolVersion('1.0'); } /** * Factory method for chainability. * * Example: * * return Response::create($body, 200) * ->setSharedMaxAge(300); * * @param mixed $content The response content, see setContent() * @param int $status The response status code * @param array $headers An array of response headers * * @return static */ public static function create($content = '', $status = 200, $headers = []) {
View {#468}
* @param mixed $response * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public static function toResponse($request, $response) { if ($response instanceof Responsable) { $response = $response->toResponse($request); } if ($response instanceof PsrResponseInterface) { $response = (new HttpFoundationFactory)->createResponse($response); } elseif (! $response instanceof SymfonyResponse && ($response instanceof Arrayable || $response instanceof Jsonable || $response instanceof ArrayObject || $response instanceof JsonSerializable || is_array($response))) { $response = new JsonResponse($response); } elseif (! $response instanceof SymfonyResponse) { $response = new Response($response); } if ($response->getStatusCode() === Response::HTTP_NOT_MODIFIED) { $response->setNotModified(); } return $response->prepare($request); } /** * Substitute the route bindings onto the route. * * @param \Illuminate\Routing\Route $route * @return \Illuminate\Routing\Route */ public function substituteBindings($route) { foreach ($route->parameters() as $key => $value) { if (isset($this->binders[$key])) { $route->setParameter($key, $this->performBinding($key, $value, $route));
View {#468}
* Sort the given middleware by priority. * * @param \Illuminate\Support\Collection $middlewares * @return array */ protected function sortMiddleware(Collection $middlewares) { return (new SortedMiddleware($this->middlewarePriority, $middlewares))->all(); } /** * Create a response instance from the given value. * * @param \Symfony\Component\HttpFoundation\Request $request * @param mixed $response * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function prepareResponse($request, $response) { return static::toResponse($request, $response); } /** * Static version of prepareResponse. * * @param \Symfony\Component\HttpFoundation\Request $request * @param mixed $response * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public static function toResponse($request, $response) { if ($response instanceof Responsable) { $response = $response->toResponse($request); } if ($response instanceof PsrResponseInterface) { $response = (new HttpFoundationFactory)->createResponse($response); } elseif (! $response instanceof SymfonyResponse && ($response instanceof Arrayable || $response instanceof Jsonable ||
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
View {#468}
/** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
View {#468}
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class AdminOperationLog { /** * Handle an incoming request. * * @param $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { $userId = Auth::id(); $queryParams = $request->all(); unset($queryParams['_token']); $targetUrl = explode('?', isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:'')[0]; $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; $ip = ($request->ip() !== '127.0.0.1') ? $request->ip() : '139.129.50.178'; $this->writeLog($userId, $queryParams, $targetUrl, $ua, $ip); return $next($request); } public function writeLog($userId, $queryParams, $targetUrl, $ua, $ip) { $adminOperationLogModel = new AdminOperationLogModel(); $adminOperationLogModel->user_id = $userId; $adminOperationLogModel->target_url = $targetUrl; $adminOperationLogModel->query_params = json_encode($queryParams); $adminOperationLogModel->ua = $ua; $adminOperationLogModel->ip = $ip; $ipConvertService = new IpConvertService(); $ipData = $ipConvertService->convert($ip); $adminOperationLogModel->province = $ipData['province']; $adminOperationLogModel->opera_type = 1; $adminOperationLogModel->save(); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#385 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#380 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ public function __construct(Registrar $router) { $this->router = $router; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->router->substituteBindings($route = $request->route()); $this->router->substituteImplicitBindings($route); return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#410 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#385 …} : "App\Http\Middleware\AdminOperationLog" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Session\TokenMismatchException */ public function handle($request, Closure $next) { if ( $this->isReading($request) || $this->runningUnitTests() || $this->inExceptArray($request) || $this->tokensMatch($request) ) { return $this->addCookieToResponse($request, $next($request)); } throw new TokenMismatchException; } /** * Determine if the HTTP request uses a ‘read’ verb. * * @param \Illuminate\Http\Request $request * @return bool */ protected function isReading($request) { return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']); } /** * Determine if the application is running unit tests. * * @return bool
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#411 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#410 …} : "Illuminate\Routing\Middleware\SubstituteBindings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // If the current session has an "errors" variable bound to it, we will share // its value with all view instances so the views can easily access errors // without having to bind. An empty bag is set when there aren't errors. $this->view->share( 'errors', $request->session()->get('errors') ?: new ViewErrorBag ); // Putting the errors in the view for every view allows the developer to just // assume that some errors are always available, which is convenient since // they don't have to continually run checks for the presence of errors. return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#412 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#411 …} : "App\Http\Middleware\VerifyCsrfToken" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->sessionHandled = true; // If a session driver has been configured, we will need to start the session here // so that the data is ready for an application. Note that the Laravel sessions // do not make use of PHP "native" sessions in any way since they are crappy. if ($this->sessionConfigured()) { $request->setLaravelSession( $session = $this->startSession($request) ); $this->collectGarbage($session); } $response = $next($request); // Again, if the session has been configured we will need to close out the session // so that the attributes may be persisted to some storage medium. We will also // add the session identifier cookie to the application response headers now. if ($this->sessionConfigured()) { $this->storeCurrentUrl($request, $session); $this->addCookieToResponse($response, $session); } return $response; } /** * Perform any final actions for the request lifecycle. * * @param \Illuminate\Http\Request $request * @param \Symfony\Component\HttpFoundation\Response $response * @return void */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#413 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#412 …} : "Illuminate\View\Middleware\ShareErrorsFromSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Create a new CookieQueue instance. * * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookies * @return void */ public function __construct(CookieJar $cookies) { $this->cookies = $cookies; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); foreach ($this->cookies->getQueuedCookies() as $cookie) { $response->headers->setCookie($cookie); } return $response; } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#414 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#413 …} : "Illuminate\Session\Middleware\StartSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Disable encryption for the given cookie name(s). * * @param string|array $cookieName * @return void */ public function disableFor($cookieName) { $this->except = array_merge($this->except, (array) $cookieName); } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $this->encrypt($next($this->decrypt($request))); } /** * Decrypt the cookies on the request. * * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Request */ protected function decrypt(Request $request) { foreach ($request->cookies as $key => $c) { if ($this->isDisabled($key)) { continue; } try { $request->cookies->set($key, $this->decryptCookie($key, $c)); } catch (DecryptException $e) { $request->cookies->set($key, null); }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#415 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#414 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /** * Sort the given middleware by priority. *
return $route; } /** * Return the response for the given route. * * @param Route $route * @param Request $request * @return mixed */ protected function runRoute(Request $request, Route $route) { $request->setRouteResolver(function () use ($route) { return $route; }); $this->events->dispatch(new Events\RouteMatched($route, $request)); return $this->prepareResponse($request, $this->runRouteWithinStack($route, $request) ); } /** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware)
Route {#232}
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request) { $this->current = $route = $this->routes->match($request); $this->container->instance(Route::class, $route); return $route; } /** * Return the response for the given route. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Route {#232}
* @return mixed */ public function respondWithRoute($name) { $route = tap($this->routes->getByName($name))->bind($this->currentRequest); return $this->runRoute($this->currentRequest, $route); } /** * Dispatch the request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request)
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter() { return function ($request) { $this->app->instance('request', $request); return $this->router->dispatch($request); }; } /** * Call the terminate method on any terminable middleware. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Response $response * @return void */ public function terminate($request, $response) { $this->terminateMiddleware($request, $response); $this->app->terminate(); } /** * Call the terminate method on any terminable middleware. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
{ $this->config = $config; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * * @throws \Symfony\Component\HttpKernel\Exception\HttpException * * @return mixed */ public function handle($request, Closure $next) { $this->setTrustedProxyHeaderNames($request); $this->setTrustedProxyIpAddresses($request); return $next($request); } /** * Sets the trusted proxies on the request to the value of trustedproxy.proxies * * @param \Illuminate\Http\Request $request */ protected function setTrustedProxyIpAddresses($request) { $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies'); // We only trust specific IP addresses if (is_array($trustedIps)) { return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps); } // We trust any IP address that calls us, but not proxies further // up the forwarding chain. // TODO: Determine if this should only trust the first IP address // Currently it trusts the entire chain (array of IPs),
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#213 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#22 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#293 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#213 …} : "App\Http\Middleware\TrustProxies" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#362 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#293 …} : "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class ValidatePostSize { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Http\Exceptions\PostTooLargeException */ public function handle($request, Closure $next) { $max = $this->getPostMaxSize(); if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) { throw new PostTooLargeException; } return $next($request); } /** * Determine the server 'post_max_size' as bytes. * * @return int */ protected function getPostMaxSize() { if (is_numeric($postMaxSize = ini_get('post_max_size'))) { return (int) $postMaxSize; } $metric = strtoupper(substr($postMaxSize, -1)); $postMaxSize = (int) $postMaxSize; switch ($metric) { case 'K': return $postMaxSize * 1024; case 'M':
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#363 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#362 …} : "App\Http\Middleware\TrimStrings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function handle($request, Closure $next) { if ($this->app->isDownForMaintenance()) { $data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true); throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']); } return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#364 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#363 …} : "Illuminate\Foundation\Http\Middleware\ValidatePostSize" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Send the given request through the middleware / router. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function sendRequestThroughRouter($request) { $this->app->instance('request', $request); Facade::clearResolvedInstance('request'); $this->bootstrap(); return (new Pipeline($this->app)) ->send($request) ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) ->then($this->dispatchToRouter()); } /** * Bootstrap the application for HTTP requests. * * @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter()
$router->middlewareGroup($key, $middleware); } foreach ($this->routeMiddleware as $key => $middleware) { $router->aliasMiddleware($key, $middleware); } } /** * Handle an incoming HTTP request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function handle($request) { try { $request->enableHttpMethodParameterOverride(); $response = $this->sendRequestThroughRouter($request); } catch (Exception $e) { $this->reportException($e); $response = $this->renderException($request, $e); } catch (Throwable $e) { $this->reportException($e = new FatalThrowableError($e)); $response = $this->renderException($request, $e); } $this->app['events']->dispatch( new Events\RequestHandled($request, $response) ); return $response; } /** * Send the given request through the middleware / router. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ $app = require_once __DIR__.'/../bootstrap/app.php'; /* |-------------------------------------------------------------------------- | Run The Application |-------------------------------------------------------------------------- | | Once we have the application, we can handle the incoming request | through the kernel, and send the associated response back to | the client's browser allowing them to enjoy the creative | and wonderful application we have prepared for them. | */ $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/209" #requestUri: "/ebook/209" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Key | Value |
USER | "www"
|
HOME | "/home/www"
|
HTTP_HOST | "www.h5tpl.com"
|
HTTP_USER_AGENT | "claudebot"
|
HTTP_ACCEPT | "*/*"
|
PATH_INFO | "" |
REDIRECT_STATUS | "200"
|
SERVER_NAME | "www.h5tpl.com"
|
SERVER_PORT | "80"
|
SERVER_ADDR | "172.26.203.115"
|
REMOTE_PORT | "39866"
|
REMOTE_ADDR | "54.196.106.106"
|
SERVER_SOFTWARE | "nginx/1.20.1"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
REQUEST_SCHEME | "http"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
DOCUMENT_ROOT | "/www/wwwroot/www.h5tpl.com/public"
|
DOCUMENT_URI | "/index.php"
|
REQUEST_URI | "/ebook/209"
|
SCRIPT_NAME | "/index.php"
|
CONTENT_LENGTH | "" |
CONTENT_TYPE | "" |
REQUEST_METHOD | "GET"
|
QUERY_STRING | "" |
SCRIPT_FILENAME | "/www/wwwroot/www.h5tpl.com/public/index.php"
|
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711703286.4662
|
REQUEST_TIME | 1711703286
|
APP_NAME | "自学php"
|
APP_ENV | "production"
|
APP_KEY | "base64:Y229TlMDpHVpMgykom7SZrXLV/gtIH34Dtsy/nKxQMU="
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
APP_URL | "http://www.h5tpl.com"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "127.0.0.1"
|
DB_PORT | "3306"
|
DB_DATABASE | "www_h5tpl_com"
|
DB_USERNAME | "www_h5tpl_com"
|
DB_PASSWORD | "bswZEDrTawFi7jA8"
|
DB_HOST_DATAVERSE | "47.103.47.61"
|
DB_DATABASE_DATAVERSE | "h5tpl"
|
DB_USERNAME_DATAVERSE | "root"
|
DB_PASSWORD_DATAVERSE | "@@Thcm123223!"
|
BROADCAST_DRIVER | "log"
|
CACHE_DRIVER | "file"
|
SESSION_DRIVER | "file"
|
SESSION_LIFETIME | "120"
|
QUEUE_DRIVER | "sync"
|
REDIS_HOST | "127.0.0.1"
|
REDIS_PASSWORD | "@redis5123"
|
REDIS_PORT | "6379"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "smtp.qq.com"
|
MAIL_PORT | "465"
|
MAIL_USERNAME | "491798689@qq.com"
|
MAIL_PASSWORD | "gjxdiefjstvebjid"
|
MAIL_ENCRYPTION | "ssl"
|
PUSHER_APP_ID | "" |
PUSHER_APP_KEY | "" |
PUSHER_APP_SECRET | "" |
PUSHER_APP_CLUSTER | "mt1"
|
QINIU_AK | "Upq8Cr-OzhctI3w4fIX_52xt7VJt1EkDQ9Zp7yh4"
|
QINIU_SK | "ikWAz6uFeFj57dV_kl178T_8NmuIganVWM5lPPsI"
|
QINIU_BUCKET | "blog"
|
QINIU_DOMAINS_DEFAULT | "img.h5tpl.com"
|
QINIU_UEDITOR_BUCKET | "blog"
|
QINIU_UEDITOR_DOMAINS_DEFAULT | "http://img.h5tpl.com"
|
QINIU_QRCODE_BUCKET | "blog"
|
QINIU_QRCODE_DOMAINS_DEFAULT | "img.h5tpl.com"
|
SHORTURL_DEFAULT_GATEWAYS | "wechat"
|
WECHAT_APP_ID | "wx92d380067e681c96"
|
WECHAT_SECRET_KEY | "5c5906fa87f6247bd901c37a94c320f4"
|
WECHAT_MINI_APP_ID | "" |
WECHAT_MINI_SECRET_KEY | "" |
WECHAT_MINI_TOKEN | "" |
JPUSH_APP_KEY | "" |
JPUSH_MASTER_SECRET | "" |
L5_SWAGGER_GENERATE_ALWAYS | "true"
|
CHUANG_LAN_API_ACCOUNT | "" |
CHUANG_LAN_API_PASSWORD | "" |
XINLANG_SHORTURL_KEY | "202088835"
|
BAIDU_SHORTURL_KEY | "290a944b7b5031a4b7b6f65c4a94527e"
|
YUAN_DATA_ACCESS_ID | "" |
YUAN_DATA_ACCESS_KEY | "" |
DEFAULT_SMS_SUPPLIER | "tencent"
|
ALIDAYU_APP_KEY | "LTAIuSnW4id7ORiR"
|
ALIDAYU_APP_SECRET | "NlZ8CBkyruevrGASVwEN3bCNKXsBrP"
|
ALIDAYU_VERIFY_SIGN | "h5模板网"
|
ALIDAYU_VERIFY_TEMPLATEID | "SMS_171113303"
|
TENCENT_APP_KEY | "1400058853"
|
TENCENT_APP_SECRET | "5a4e4bf735d17d5c9ac412d8bdbde429"
|
TENCENT_VERIFY_SIGN | "h5模板"
|
TENCENT_VERIFY_TEMPLATEID | "72180"
|
Key | Value |
APP_NAME | "自学php"
|
APP_ENV | "production"
|
APP_KEY | "base64:Y229TlMDpHVpMgykom7SZrXLV/gtIH34Dtsy/nKxQMU="
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
APP_URL | "http://www.h5tpl.com"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "127.0.0.1"
|
DB_PORT | "3306"
|
DB_DATABASE | "www_h5tpl_com"
|
DB_USERNAME | "www_h5tpl_com"
|
DB_PASSWORD | "bswZEDrTawFi7jA8"
|
DB_HOST_DATAVERSE | "47.103.47.61"
|
DB_DATABASE_DATAVERSE | "h5tpl"
|
DB_USERNAME_DATAVERSE | "root"
|
DB_PASSWORD_DATAVERSE | "@@Thcm123223!"
|
BROADCAST_DRIVER | "log"
|
CACHE_DRIVER | "file"
|
SESSION_DRIVER | "file"
|
SESSION_LIFETIME | "120"
|
QUEUE_DRIVER | "sync"
|
REDIS_HOST | "127.0.0.1"
|
REDIS_PASSWORD | "@redis5123"
|
REDIS_PORT | "6379"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "smtp.qq.com"
|
MAIL_PORT | "465"
|
MAIL_USERNAME | "491798689@qq.com"
|
MAIL_PASSWORD | "gjxdiefjstvebjid"
|
MAIL_ENCRYPTION | "ssl"
|
PUSHER_APP_ID | "" |
PUSHER_APP_KEY | "" |
PUSHER_APP_SECRET | "" |
PUSHER_APP_CLUSTER | "mt1"
|
QINIU_AK | "Upq8Cr-OzhctI3w4fIX_52xt7VJt1EkDQ9Zp7yh4"
|
QINIU_SK | "ikWAz6uFeFj57dV_kl178T_8NmuIganVWM5lPPsI"
|
QINIU_BUCKET | "blog"
|
QINIU_DOMAINS_DEFAULT | "img.h5tpl.com"
|
QINIU_UEDITOR_BUCKET | "blog"
|
QINIU_UEDITOR_DOMAINS_DEFAULT | "http://img.h5tpl.com"
|
QINIU_QRCODE_BUCKET | "blog"
|
QINIU_QRCODE_DOMAINS_DEFAULT | "img.h5tpl.com"
|
SHORTURL_DEFAULT_GATEWAYS | "wechat"
|
WECHAT_APP_ID | "wx92d380067e681c96"
|
WECHAT_SECRET_KEY | "5c5906fa87f6247bd901c37a94c320f4"
|
WECHAT_MINI_APP_ID | "" |
WECHAT_MINI_SECRET_KEY | "" |
WECHAT_MINI_TOKEN | "" |
JPUSH_APP_KEY | "" |
JPUSH_MASTER_SECRET | "" |
L5_SWAGGER_GENERATE_ALWAYS | "true"
|
CHUANG_LAN_API_ACCOUNT | "" |
CHUANG_LAN_API_PASSWORD | "" |
XINLANG_SHORTURL_KEY | "202088835"
|
BAIDU_SHORTURL_KEY | "290a944b7b5031a4b7b6f65c4a94527e"
|
YUAN_DATA_ACCESS_ID | "" |
YUAN_DATA_ACCESS_KEY | "" |
DEFAULT_SMS_SUPPLIER | "tencent"
|
ALIDAYU_APP_KEY | "LTAIuSnW4id7ORiR"
|
ALIDAYU_APP_SECRET | "NlZ8CBkyruevrGASVwEN3bCNKXsBrP"
|
ALIDAYU_VERIFY_SIGN | "h5模板网"
|
ALIDAYU_VERIFY_TEMPLATEID | "SMS_171113303"
|
TENCENT_APP_KEY | "1400058853"
|
TENCENT_APP_SECRET | "5a4e4bf735d17d5c9ac412d8bdbde429"
|
TENCENT_VERIFY_SIGN | "h5模板"
|
TENCENT_VERIFY_TEMPLATEID | "72180"
|