Laravel实用技巧

Laravel 作为大名鼎鼎的 PHP Web 框架,有着「过度设计」的美誉(滑稽)。也就免不了附带着一些需要学习和摸索才能掌握的奇技淫巧(好吧其实只需要看看文档就行)。笔者结合自身的开发经验,把值得一提的东西梳理成文,便于读者在使用 Laravel 进行开发时事半功倍。

……

播客札记(四):消费主义&审美

翻转问答 VOL30 | 道理能解决消费主义和奢侈的否定欲望?

Episode Archive

道理无法解决问题

  • 消费主义本身并不是一个多深的批判,对消费主义的批评不需要过高的学术门槛。
  • 批判难度低并不意味着不具备批判价值。
  • 掌握道理本身不难,但改变和解决问题并不能通过了解某个道理来完成。
……

《Modern PHP》学习笔记

命名空间(namespace)

基本概念

  • PHP 命名空间与操作系统的物理文件系统不同,这是一个虚拟概念,没必要和文件系统中的目录结构完全对应。但是大多数 PHP 组件为了兼容 PSR-4 自动加载器标准,会把子命名空间放到文件系统的子目录中。
  • 从技术层面来看,命名空间只是 PHP 语言中的一种记号,PHP 解释器会将其作为前缀添加到类、接口、函数和常量的名称前面。
  • 不同代码可能使用相同的类名、接口名、函数名或常量名,如果不使用命名空间,名称会起冲突,导致 PHP 执行出错。而使用命名空间,把代码放在唯一的厂商命名空间中,这样不同命名空间下的代码就可以使用相同的名称命名类、接口、函数和常量。
  • 在同一个命名空间或子命名空间中的所有类没必要在同一个 PHP 文件中声明。你可以在 PHP 文件的顶部指定一个命名空间或子命名空间,此时,这个文件中的代码就是该命名空间或子命名空间的一部分。因此,我们可以在不同的文件中编写属于同一个命名空间的多个类。
……

《精通正则表达式》学习笔记(六)


PHP 的正则流派

  • PHP 的三种正则引擎是 pregcregmb_ereg
  • 在默认情况下,preg 套件的正则表达式是以字节为单位的,所以「\C」默认等价于「(?d:.)」,由 s 修饰的点号。不过,如果使用了修饰符 u,则 preg 套件就会以 UTF-8 字母为单位,也就是说,一个字符可能由 6 个字节组成。即使这样,「\C」仍然匹配单个字节。
  • \z」和「\Z」都能够匹配字符串的末尾,而「\Z」同样能够匹配最后的换行符。
  • $」的意义取决于模式修饰符 mD:如果没有设定任何修饰符,「$」等价于「\Z」(在字符串结尾的换行符,或者是字符串结尾);如果使用了 m,则它能够匹配内嵌的换行符,如果使用了模式修饰符 D,它能够匹配「\z」(只有在字符串的结尾)。如果同时设置了 mD,则忽略 D
  • PHP 正则引擎的处理方式完全是程序式的。
……

《精通正则表达式》学习笔记(五)


  • 因为 NFA 引擎容许用户进行精确控制,所以我们可以用心打造正则表达式。
  • 调校表达式时需要考虑的两个因素是准确性效率:精确匹配文本而不包含多余的内容,且速度要快。
  • 优化表达式的关键在于彻底理解回溯背后的过程,学习些技巧来避免可能的回溯。
  • 不同工具可能使用不同的优化措施。如果能够预先判断目标字符串基本无法匹配(例如目标宇符串缺少一个引擎能够预知的,匹配成功必须的字符),足够聪明的实现方式可以完全不应用正则表达式。
  • 在分析效率时,不要忘了不同正则引擎的差异。
……