在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历。那么类呢?我们要如何知道这个类是否可以通过 foreach 来进行遍历呢?其实,PHP已经为我们提供了一个现成的接口。
不管从事什么行业,现在都是活到老学到老的趋势,特别是我们这堆码农。这回也不用说新技术用不上,光光是PHP文档的学习都会发现非常多的知识点其实自己并没有真正的掌握,比如说这个方法参数的类型声明。上次文章中,关于PHP的方法参数类型约束,我们说过方法参数的类型约束仅限于类、接口、数组或者callable回调函数
相信不少PHP开发者或多或少都见过类似于 "php://input" 或者 "php://output"这样的内容,很多人都知道这两个的作用一个是接收的 POST 请求中的原始 body 内容,另一个其实和 echo 之类的输出一样是进行输出的。
我们首先来了解下什么是上下文。在我们写文章,写句子时,都会考虑一个观点或者内容的前后逻辑,转承启合,而在这个观点前后的内容就可以看成是它的上下文内容。它包含了语境的意味在里面,其实代码世界中的上下文也是一样的意思,本身 Context 这个单词就是环境、背景的意思。
化关于PHP中的对象序列化这件事儿,之前我们在很早前的[]()文章中已经提到过 __sleep() 和 __weakup() 这两个魔术方法。今天我们介绍的则是另外一个可以控制序列化内容的方式,那就是使用 Serializable 接口。
在面对这个网络世界的时候,密码安全总是各个公司和用户都非常关心的一个内容,毕竟现在大家不管是休闲娱乐还是学习购物都是通过网上的帐号来进行消费的,所以我们通常会给用户的密码进行加密。在加密的时候,经常会听到“加盐”这个词,这是什么意思呢?
在一些场景中,比如说注册登录的时候,我们会对用户名做一些限制,比如只能是数字和字母的组合。一般情况下,我们会使用正则表达式来完成这样的功能,不过,PHP其实已经帮我们准备发了几个函数来处理这样的情况。
这次我们来介绍一个SPL库中的目录迭代器,它的作用其实非常简单,从名字就可以看出来,就是获取指定目录下的所有内容。之前我们要遍历目录获取目录及目录下的所有文件一般是需要进行递归遍历的,自己写这个代码说实话还是挺麻烦的,所以
在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录。但其实 HTTP 也提供了这种登录验证机制,我们今天就来学习关于 HTTP 验证相关的知识。
对于我们的程序开发来说,用户的输入是解决安全性问题的第一大入口。为什么这么说呢?不管是SQL注入、XSS还是文件上传漏洞,全部都和用户提交的输入参数有关。今天我们不讲这些问题,我们主要探讨下面对用户的输入,有一些危险的函数在未经验证的情况下是不能直接使用这些函数来进行操作的
简单的文件读取,一般我们会使用 file_get_contents() 这类方式来直接获取文件的内容。不过这种函数有个严重的问题是它会把文件一次性地加载到内存中,也就是说,它会受到内存的限制。因此,加载大文件的时候是绝对不能使用这种方式的。我们还是先看看这种方式加载的例子。
之前我们其实已经有过几篇文章讲过引用方面的问题,这次我们来全面的梳理一下引用在PHP到底是怎么回事,它和C中的指针有什么不同,在使用的时候要注意些什么。什么是引用?在 PHP 中引用意味着用不同的名字访问同一个变量内容。它不是C的指针,保存的并不是内存地址,无法进行指针运算。
什么是生成器?听着高大上的名字,感觉像是创造什么东西的一个功能,实际上,生成器是一个用于迭代的迭代器。它提供了一种更容易的方式来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。说了半天不如直接看看代码更直观。
在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了。关于闭包匿名函数,在JS中有个很典型的问题就是要给它绑定一个 this 作用域。其实这个问题在PHP中也是存在的
对于PHP这样一个web语言来说,接参是非常重要的一个能力。毕竟从前端表单或异步请求传递上来的数据都要获取到才能进行正常的交互展示。当然,这也是所有能够进行web开发的语言的必备能力。今天我们就来看看PHP各种各样的接参形式。首先,我们要准备一个静态页面
上回文章中我们讲到了错误是编译和语法运行时会出现的,它们与逻辑无关,是程序员在码代码时不应该出现的,也就是说,这些错误应该是尽量避免带到线上环境的,他们不能通过try…catch捕获到。而异常则正好相反。什么是异常?异常,指的是程序运行中出现的不符合预期的情况
关于错误与异常的最后一篇文章,我们来进行一些总结。PHP中错误和异常的区别通过前面两篇文章的学习,我们来直接将错误和异常摆上来进行对比,看看他们的区别与联系:错误的出现通常是语法或编译运行时错误,是我们要避免的。而异常一般与业务逻辑有关,基本上是人为抛出,需要上层来处理
在PHP的学习过程中,我们会接触到两个概念,一个是错误,一个是异常。啥玩意?他们不是一个东西嘛?如果接触过Java、C#之类的纯面向对象语言的同学,可能对异常是没有什么问题,毕竟所有的问题都可以try catch来解决。但是像PHP这种从面向过程发展到面向对象的语言来说,错误和异常就是两个完全不同的东西了。
PHP中使用DOMDocument来处理HTML、XML文档其实从PHP5开始,PHP就为我们提供了一个强大的解析和生成XML相关操作的类,也就是我们今天要讲的 DOMDocument 类。不过我估计大部分人在爬取网页时还是会喜欢用正则去解析网页内容
记一次PHP的Invalid binding type问题首先说明下环境问题,新旧服务器的迁移。代码在老服务器运行没有任何问题。环境都是PHP7.3,结果新的服务器上流量导过来以后,就报出了如下问题:FastCGI sent in stderr: "PHP message: PHP Fat
Laravel Swoole 设计模式 算法 数据结构 PHP基础 压缩 MySQLi 缓存 性能 命名空间 信管师 Redis Nginx 迅搜 MQ 消息队列 MySQL PHP 加解密 PDO PHP数据库 时间日期 文件操作 国际化 GD库 图片处理 PHP SPL CURL Composer PHP魔术 PHP框架 ACP 敏捷