
后端
文章平均质量分 96
ZeroHeroX
这个作者很懒,什么都没留下…
展开
-
目录启示:使用 use 关键字为命名空间内的元素建立非限定名称
在 PHP 中,use 关键字的默认操作对象是 类。若您需要将 函数 或 常量 导入至当前命名空间,请在 use 关键字后添加 function 或 const 以告知 PHP 解释器。在 PHP 中,use ... as ... 语句用于导入命名空间中的 类、接口、函数 或 常量并为它们创建一个 别名,以便可以在当前代码块中使用别名来引用相关的元素。原创 2023-10-14 14:16:49 · 361 阅读 · 0 评论 -
目录启示:PHP 中 命名空间及其成员的访问
在使用 namespace 访问当前命名空间元素时,namespace 后需要紧跟反斜线 \,后跟子命名空间或 其他元素(类、接口、函数 和 常量)。在使用非限定名称对元素进行访问时,类名称 总是基于当前命名空间进行解析。因此 在其他命名空间中尝试访问全局命名空间中的类时,必须使用完全限定名称。在任何 PHP 版本中,使用完全限定名称或限定名称对未定义常量进行访问都将导致 Fatal 异常,PHP 程序都将为此立即终止。原创 2023-10-14 11:30:20 · 399 阅读 · 0 评论 -
目录启示:PHP 与命名空间的声明
在同一 PHP 脚本文件中,有括号命名空间声明与无括号命名空间声明 不能混用。否则,PHP 将为此抛出 Fatal error 异常并立即停止运行。在 PHP 中,以 PHP 作为名称开头的命名空间通常用于表示 PHP 本身的 核心命名空间。这些命名空间用于组织 PHP 语言 内置的类、接口、函数和常量。虽然您可以在自己的代码中创建以 PHP 开头的命名空间,但最好不要这样做,以 避免混淆和冲突。原创 2023-10-13 20:58:39 · 551 阅读 · 0 评论 -
沉睡的木乃伊:var_export() 与可解析字符串
var_export() 和 eval() 可以用于实现数据持久化,因为它们共同提供了一种 将数据结构序列化为字符串,然后在需要时重新创建该数据结构的方法。这个过程可以用于将数据保存在文件或数据库中,然后在以后重新加载和使用它。var_export() 生成的输出易于阅读,它以有效的 PHP 代码形式表示变量的 值和类型,使开发人员能够快速理解变量的内容。原创 2023-10-13 10:45:56 · 821 阅读 · 0 评论 -
具有动态属性支持的通用空类:stdClass
在 PHP8.2.0 废弃动态属性后,stdClass 类仍旧支持动态属性机制,您并不需要尝试为 stdClass 添加 #[\AllowDynamicProperties] 注解。在 PHP 内部,stdClass 常作为一个 容器,用于存储 键值对(键值对是一种数据结构,通常用于将一个值与一个唯一标识符或键相关联。在对象中,键可以理解为属性,值可以理解为属性值)。当 PHP 需要为一些操作创建一个对象,但又 不需要特定的类结构时,就会使用 stdClass。原创 2023-10-12 11:39:12 · 703 阅读 · 0 评论 -
DATA URL:嵌入 URL 中的数据资源
小尺寸图片、文本等数据 直接嵌入在 URL 中,不需要通过网络连接从服务器中获取。有利于 降低服务器压力,提高 HTTP 请求的效率(HTTP 连接的建立与维护所耗费的资源多用于大型资源),从而提高网页的加载速度。Base64 编码使用的字符集是 URL 兼容的,这意味着它不包含 URL 特殊字符,如问号、斜杠、等号等。因此图片等二进制资源常使用 Base64 进行编码以方便资源的传输。但 Base64 编码通常会导致数据占用空间增大约 33%,这意味着资源在 DATA URL 中占用的内存空间会比原始资源原创 2023-10-08 10:08:55 · 2748 阅读 · 0 评论 -
PHP 伪协议:使用 php://input 访问原始 POST 数据
php://input 是 PHP 提供的一个伪协议,允许开发者 访问 POST 请求的原始内容。enable_post_data_reading 是 PHP 中的一个布尔配置项,该配置项决定了 是否在 PHP 启动时读取和解析 POST 数据以填充 $_POST 与 $_FILES 超全局变量。在 默认情况 下,enable_post_data_reading 是 开启 的。原创 2023-10-07 19:11:56 · 9877 阅读 · 0 评论 -
PHP 伪协议:使用 php://filter 为数据流应用过滤器
php://filter 的主要作用是提供一种机制,让您可以轻松地在数据流上应用一个或多个过滤器。convert.base64-encode 与 convert.base64-decode 是 php://filter 所支持的过滤器,使用这两个过滤器等同于使用 base64_encode() 与 base64_decode() 对数据流进行处理。在为 php://filter 指定过滤器时,可以通过 管道符 | 指定多个过滤器(过滤器列表),这些过滤器将按照 从左至右 的顺序 依次 对数据流进行处理。原创 2023-10-07 13:10:45 · 4526 阅读 · 1 评论 -
PHP 行事准则:allow_url_fopen 与 allow_url_include
在开启 allow_url_include 配置项后,PHP 仅能够对远程文件进行读写等文件操作。在开启 allow_url_fopen 配置项后,PHP 将能够通过 include 等函数 将远程文件包含至当前文件并将其作为 PHP 代码进行执行。allow_url_include 的生效依赖于 allow_url_fopen 配置项的开启。自 PHP5.2 版本开始,allow_url_include 配置项的默认配置均为 Off,而 allow_url_fopen 配置项的默认配置始终为 On。原创 2023-10-06 16:04:59 · 3914 阅读 · 1 评论 -
PHP 行事准则:PHP 配置文件
php.ini-production 和 php.ini-developer 是 PHP5.3 及后续版本 提供的两个不同的 PHP 配置文件。在 PHP 中,配置文件是用来控制 PHP 运行时行为 的重要组成部分。PHP 配置文件包含一系列的配置指令,用于 定义 PHP 的工作方式和行为。在 PHP5.3 以前,PHP 官方也提供 PHP 配置文件,即 php.ini-dist 与 php.ini-recommended,分别与此后的 php.ini-development 及 php.ini-produ原创 2023-10-06 13:30:17 · 662 阅读 · 0 评论 -
PHP 变动:用于创建常量数组的 define() 与 const
PHP 在 5.6 开始支持常量数组,此版本以前的 PHP 仅支持 Scalar Values(int、 float、string、boolean 或 null) 作为常量值,若将数组作为常量的值,则 PHP 将抛出 Fatal error 异常。与 const 的功能类似,define() 也是 PHP 中用于定义常量的函数。define() 函数 在 PHP7.0.0 版本开始支持定义值为数组的常量。原创 2023-09-28 21:19:02 · 1023 阅读 · 0 评论 -
闪耀的钥匙:PHP 与访问修饰符
访问修饰符在面向对象编程中起着重要的作用,它们提供了 对类的属性和方法的访问级别控制。PHP 支持三种访问修饰符:public,protected 以及 private。在重写一个父类方法或属性时,子类的成员的可见性不能低于父类相同成员的可见性。可见性按照以下顺序从高到低:private > protected > public。这意味着子类成员可以将父类成员的可见性扩大,但不能缩小。在 PHP 中,类常量可以使用访问修饰符(public、protected、private)来指定它们的可见性,这与类属性和原创 2023-05-14 08:29:57 · 842 阅读 · 0 评论 -
使用 Express 实现 Session 身份认证
服务器端接收到该数据后将在服务器中查询与该 SessionID 相关的 Session 对象并通过该对象中存储的用户信息来决定对该客户端的行为。在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。Cookie 保存了你的登录信息,浏览器会通过域名来划分浏览器中所有的 Cookie。如果一个客户是首次登录该网页的,那么在本次登录成功后,服务器端将向客户端发送一个 Cookie ,其中保存了用户的登录信息。原创 2023-01-29 20:51:53 · 1158 阅读 · 7 评论 -
Express 通过 CORS 或 JSONP 解决跨域问题
出现这种现象的原因是因为预检请求共包含两次请求,一次是 options 请求,即预检请求,该请求由浏览器自动发送;一次是正式请求。CORS 的相关响应头部的前缀均为 Acess-Control-Allow 。同源策略的一个主要功能就是有效阻止可能发生的 CSRF(Cross Site Request Forgery,跨站伪造请求) 。原创 2023-01-28 16:57:29 · 2438 阅读 · 0 评论 -
NodeJS 与第三方模块 mysql(基本操作)
在 NodeJS 对数据库进行查询等操作时 NodeJS 将正式向 MySQL 发起连接,所以通过此法可以检查数据库是否可以正常连接。在编写后端代码时,一定要注意数据与代码分离的原则。在 mysql 模块中,你可以使用 ? 来代替某个数据。在使用占位符代替数据后,请不要忘记向 mysql 模块提供需要被替代的数据。原创 2023-01-26 20:23:21 · 1455 阅读 · 0 评论 -
自定义 Express 中间件以实现 express.urlencoded() 的类似功能
中间件 express.urlencoded() 可以将客户端以 POST 方式提交的 application/x-www-form-urlencoded数据转换为 JavaScript 对象。比如,express.urlencoded() 可以将如下数据转换为:转换为:这个转换过程中进行了如下两个步骤:Express 模块在 4.16.0 后才添加了内置中间件 express.urlencoded() ,在该版本以前,该功能主要由 Express 的第三方中间件 body-parser 承担。如果你使用原创 2023-01-26 15:14:34 · 1632 阅读 · 0 评论 -
NodeJS Web 框架 Express 之中间件
中间件可以理解为实现某项功能的函数或是模块。在 Express 中,你可以使用一个或多个中间件来处理客户端的请求,并在最后对客户端的请求进行响应。原创 2023-01-25 23:24:36 · 721 阅读 · 4 评论 -
NodeJS Web 框架 Express 之路由
在 Web 中,路由可以理解为 URL 与函数的映射关系。当一个请求从客户端发送到服务器端时,都需要与已定义的路由进行匹配,当匹配成功时将调用对应的回调函数以对客户端的请求进行响应。URL 与路由匹配成功需要满足客户端发出的请求的请求类型及该请求所请求的路径均与路由相应的设置匹配成功。你可能希望为创建的路由添加一个统一的前缀,这里我们尝试为路由添加一个统一的前缀。请求的 URL 将与程序中建立建立的路由依次匹配,一旦匹配成功便停止匹配。修改后,在本示例中,访问如下链接你将得到如下响应。原创 2023-01-25 21:18:16 · 1087 阅读 · 0 评论 -
初识 Express(基于 NodeJS http 模块封装的 Web 框架)
Express 会自动对 URL 进行分析,并提取其中的静态 URL 参数,你可以通过 Express 提供的接口 req.params 来获取 URL 参数的分析结果。我们可以在项目根路径中创建 public 文件夹,该文件夹中的资源将被服务器托管,客户端可以对资源进行访问。原创 2023-01-25 08:05:49 · 1121 阅读 · 0 评论 -
NodeJS 之 npm(NodeJS Package Manager)包管理工具
由于墙的存在,部分包(NodeJS 中的第三方模块)的安装可能会十分缓慢甚至无法安装,我们可以通过将 npm 当前的安装源更换为国内的镜像源来解决这一问题。package.json** 会记录项目中所使用到的模块,在将项目文件转移到其他计算机后,你可以通过 **npm install** 来一键安装 **package.json** 所描述的包。原创 2023-01-23 15:54:48 · 1545 阅读 · 0 评论 -
NodeJS 之模块化
在 ES6 中模块将自动开启严格模式,不管你有没有在模块文件的文件头部加上 use strict; 语句。在 module 对象中存在另一个对象 exports ,该对象可用于将模块中的成员共享到其他文件中去。要共享某个成员,你仅需要将该成员定义为 module.exports 对象的方法或属性即可。在 NodeJS 中使用 require() 函数导入某个模块,实际上导入的是 module.exports 对象。原创 2023-01-23 12:36:53 · 1581 阅读 · 0 评论 -
NodeJS 之 HTTP 模块(实现一个基本的 HTTP 服务器)
HTTP 模块是 NodeJS 中核心的内置模块,你可以通过该模块搭建 HTTP 或 HTTPS 服务器,而无需像 PHP 等服务器端语言需要其他软件(Aphche、Nginx、IIS等)提供服务器功能。使用 server.listen() 或 server.listen(0) 在目标端口被占用的情况下,使用由 NodeJS 提供的随机端口。如果随机端口仍被占用,则将继续触发错误代码为 **EADDRINUSE** 的错误,并再次使用 NodeJS 提供的随机端口,直原创 2023-01-22 07:12:16 · 1734 阅读 · 0 评论 -
NodeJS 之 fs 模块(路径动态拼接问题)
这是因为,NodeJS 在执行 JavaScript 文件时,会将其中的相对路径与执行命令时所在的工作目录进行拼接。前面你所认识到的问题便是路径拼接问题,该问题的解决方法有两种:1. 使用绝对路径而非相对路径指定计算机中的文件。2. 通过 NodeJS 来获取被 NodeJS 执行的文件所在的文件夹的路径与目标文件(将要读取的文件)的相对路径进行拼接得到目标文件的绝对路径。原创 2023-01-21 16:12:26 · 1709 阅读 · 0 评论 -
NodeJS 之 fs 模块(文件操作)
在大多数时候,你应该使用异步方法。异步方法对开发者更为友好,并且使用异步方法也更能发挥好 NodeJS 本身的优势。但也不能对同步方法一味的排斥,在某些情况下(例如读取配置文件并启动服务器),你应该使用同步方法。原创 2023-01-21 14:17:38 · 5104 阅读 · 0 评论