【最佳实践系列】PHP 日期、时间和时区处理 API 及组件

datetime

处理日期和时间需要考虑很多事情,例如日期的格式、时区、闰年和天数各异的月份,自己处理太容易出错了,我们应该使用PHP 5.2.0引入的DateTime、DateIntervel和DateTimeZone这些类帮助我们创建及处理日期、时间和时区。 设置默认时区 首先我们要为PHP中处理日期和时间的函数设置默认时区,如果不设置的话,PHP会显示一个E_WARNING消息,设置默认时区有两种方…

【最佳实践系列】PHP 开发者如何做好密码保护 & Laravel 底层密码存储和验证实现

cwscrypto-php-hash-password-pbkdf2-bcrypt

随着在线攻击的增多,密码安全越来越重要。作为开发者我们要担负起安全管理、计算哈希和存储用户密码的责任,不管应用是简单的游戏还是绝密商业文件的仓库,都要做到这一点。PHP内置了一些工具,让保护密码变得更加容易,本节我们就来讨论如何根据现代的安全措施来使用这些工具。 1、密码保护三原则 绝对不能知道用户的密码 我们绝对不能知道用户的密码,也不能有获取用户密码的方式,如果应用的数据库被黑,你肯…

最佳实践系列(二)—— 聊聊 PHP 私有组件以及如何创建自己的 PHP 组件

composer-git-packagist

1、私有组件 大多数时候我们使用的都是公开可用的开源组件,但有时候如果公司使用内部开发的PHP组件,而基于许可证和安全方面的问题不能将其开源,就需要使用私有组件。对Composer而言,这是小菜一碟。 Composer可用管理放在需要认证的仓库中的私有PHP组件,执行composer install或composer update命令时,如果组件的仓库需要认证凭据,Composer会提醒…

最佳实践系列(一)—— 漫谈 PHP 组件、框架、Composer 那些事

Packagist

1、什么是组件 组件是一组打包的代码,是一系列相关的类、接口和Trait,用于帮助我们解决PHP应用中某个具体问题。例如,你的PHP应用需要收发HTTP请求,可以使用现成的组件如guzzle/guzzle实现。我们使用组件不是为了重新实现已经实现的功能,而是把更多时间花在实现项目的长远目标上。 优秀的PHP组件具备以下特性: 作用单一:专注于解决一个问题,而且使用简单的接口封装功能 小型…