Profile

maritime821

这家伙很懒,什么也没写
资源:2644 粉丝:0

maritime821上传的资源

PHP设计模式之迭代器模式的使用
一说到这个模式,就不得不提循环语句。当然就是被foreach这货给整得。任何语言都有这种类似的语法可以方便快捷的对数组、对象进行遍历,从而让迭代器模式从高高在上的23大设计模式中的明星慢慢成为了路人。特别是我们这门PHP语言,PHP的强大之处就在于对于数组的灵活操作,本身就是hashmap的结构,自然会有各种方便的数组操作语法,而foreach也是我们最常用的语句,甚至比for还常用。迭代器闪亮登场,主要实现了四个方法来对集合数据进行操作。有点像学习数据结构或数据库时对游标进行的操作。用First()和Next()来移动游标,用CurrentItem()来获得当前游标的数据内容,用IsDone()来确认是否还有下一条数据。所以,这个模式也另称为游标模式。客户端直接使用while来进行操作即可。
pdf
158.48 KB
2022-08-02 15:32
PHP请求上下文相关总结
比如说我们要使用PHP来请求一个链接地址,通常我们会使用 curl 来进行请求,但是 curl 的配置其实是比较复杂的,所以我们在简单使用的情况下会使用 file_get_contents() 这种函数来快捷地请求链接。其实,使用了上下文参数之后,file_get_contents() 不仅可以提交 POST 请求,还可以定义各种请求头内容。接下来,在我们的测试代码中,使用 file_get_contents() 来进行 POST 提交。stream_context_create() 是创建上下文环境的函数,它接收的参数是一个选项数组,里面用于定义当前请求的相关选项。在使用 file_get_contents() 函数请求远程地址后,我们可以在 $http_response_header 变量内获取到请求返回的响应头信息。它们是专门用来处理各种数据的,包括但不限于文件中的、网络上的、压缩文件以及其他一些操作的数据。
pdf
75.13 KB
2022-08-02 15:08
PHP中include和require的使用详解
在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢?这就是它们最主要的区别,其他方面require基本等同于include。除了普通的require和include之外,还有require_once和include_once,他们的作用是:。我们来看些例子:我们可以看出当第一个_once加载成功后,后面不管是require_once还是include_once,都不会再加载这个文件了。那么,我们在日常的开发中,使用哪个更好呢?include和require的文件如果有return,可以用变量接收retun回来的数据,另外它们还可以加载非PHP文件以及远程文件,如:这下我们对于include和require的了解就非常深入了吧,这两个加载文件的方式并不复杂,但也很容易出现一些坑,特别是_once在方法中使用的时候一定要特别注意。最后,给一个小福利,封装一个一次性加载目录中所有文件的方法:测试代码:
pdf
88.67 KB
2022-08-02 08:21
PHP垃圾回收机制的一些理解
当然这方面的内容最出名的就是 Java 中的垃圾回收机制,其实 PHP 也有相应的处理机制,当然,很多 PHPer 可能从来没接触过,今天我们就来探讨一下这方面的内容。PHP 的垃圾回收算法在之前的文章中,我们有介绍过引用计数的概念。在 PHP5.3 之前,PHP 的垃圾回收机制非常简单,就是把 refcount 为0的全部清理回收掉,在底层也就是 free 掉了。之所以强调版本,那是因为在 5.3 之后,PHP 改进了垃圾回收的算法,使这种循环引用得到了解决。PHP 会将变量的可能根放入根缓冲区。PHP 就会启动垃圾回收机制,从根缓冲区中按照深度遍历的算法来查找所有的和这个可能根相关的变量,并将某一个可能根找到的变量的 refcount 减1,并做一个标记当前这个“已减”。
pdf
110.74 KB
2022-08-02 03:02
PHP如何实现HTTP验证
在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录。但其实 HTTP 也提供了这种登录验证机制,我们今天就来学习关于 HTTP 验证相关的知识。当浏览器收到这个响应头时,就会弹出一个浏览器自带的验证框并要求输入用户名和密码。当我们填写了用户名和密码后,浏览器会在请求头中带上 Authorization 字段,并且将 base64 之后的用户名和密码发送过来。所以这种方式是非常不安全的。因为 HTTP 认证这种形式的过期时间是以浏览器为基准的。这种情况下我们只能通过 cookie 来进行退出登录的操作,如果用户退出登录了就改变这个 cookie 的内容并重新发送 401 响应头给浏览要求重新登录。
pdf
91.23 KB
2022-08-02 02:22
PHP中使用DOMDocument来处理HTML XML文档的示例
它还提供了其它的几个方法,分别是:load() 从一个文件加载XML;loadXML() 从字符串加载XML;loadHTMLFile() 从文件加载HTML。接下来我们使用和前端 JS 一样的 DOM 操作API来操作HTML里面的元素。这个例子中就是获取百度的文本框,直接使用 getElementById() 方法获得id为指定内容的 DOMElement 对象。这一段例子则是获取HTML文档中所有的图片链接。生成一个XML其实只要有一点点的前端 JS 的基础都不难看出这段代码的含义。使用 appendChild() 方法就可以为当前的 DOMElement 或者 DOMDocument 添加下级节点。最后使用 saveXML() 就能够生成标准的XML格式内容了。总结通过上面两个简单的小例子,相信大家已经对这个 DOMDocument 操作XML类文件解析的方式非常感兴趣了。
pdf
87.89 KB
2022-08-02 01:48
Thinkphp5.1获取项目根目录以及子目录路径的方法实例讲解
导读:最近使用Thinkphp5.1做开发,在使用LOG_PATH常量时发生报错,因为之前一直使用5.0的框架,换到5.1版本后,出现这种情况,很明白是官方做了调整,所以特地去看了官方说明。官方文档:常量调整Thinkphp5.1取消了所有的框架内置常量,如需获取,请使用think\facade\App类的内置方法以及think\facade\Env类获取。
pdf
54.75 KB
2022-08-02 01:20
PHP生成器的使用详解
它提供了一种更容易的方式来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。然后在循环外部又写了两行 yield 分别输出了1000和1001。每次迭代都是代码执行到 yield 时动态返回的。因此,有大神将生成器说成是PHP中最被低估了的一个特性。传入的这个值将会被当做生成器当前 yield 的返回值。另外,变量获取 yield 的值,必须要用括号括起来。yield from 语法yield from 语法其实就是指的从另一个可迭代对象中一个一个的获取数据并形成生成器返回。使用 count 来获取生成器的数量将直接报 Warning 警告。直接输出将会一直显示是 1 ,因为 count 的特性。总结生成器绝对是PHP中的一个隐藏的宝藏,不仅是对于内存节约来说,而且语法其实也非常的简洁明了。
pdf
115.62 KB
2022-08-02 01:12
详解PHP的引用计数
而括号中的 refcount 就是引用次数,is_ref 则是说明这个变量是否被引用。当我们进行普通赋值后,refcount 和 is_ref 没有任何变化,但当我们进行引用赋值后,可以看到 refcount 变成了2,is_ref 变成了1。最后我们 unset 掉 $a ,显示的就是 no such symbol 了。当前变量已经被销毁不是一个可以用的符号引用了。一是数组内部的每个元素又有单独的自己的引用计数。那么这个对象就基本不太可能会被 GC 自动销毁了。总结引用计数是了解垃圾回收机制的前提条件,而且正是因为现代语言中都有一套类似的垃圾回收机制才让我们的编程变得更加容易且安全。
pdf
97.75 KB
2022-08-01 17:33
PHP缓存系统APCu扩展的使用
想必大家都使用过 memcached 或者 redis 这类的缓存系统来做日常的缓存,或者用来抗流量,或者用来保存一些常用的热点数据,其实在小项目中,PHP 也已经为我们准备好了一套简单的缓存系统,完全能够应付我们日常普通规模站点的开发。APCu 扩展APCu 扩展是 APC 扩展的升级,APC 扩展已经不维护了。这两套扩展其实都是基于 opcode caching 。也就是 PHP 自身的 opcode 来实现的缓存能力。APCu 的安装就和普通的 PHP 扩展一样,非常简单,最主要的是这个扩展还非常的小。不管下载还是安装都是秒级可以完成的。所以说能够非常方便的应用于小规模的项目,而且是 PHP 原生支持的,不需要额外的端口之类的配置。方法说明缓存系统一般都会有的增加、删除、查询、自增等功能都在 APCu 扩展中有对应的实现。
pdf
86.11 KB
2022-08-01 16:57