php 序列化和反序列化

样例

序列化前

Array
(
    [tool] => php unserialize
    [author] => feiffy
)
Read more   2020/09/29 posted in  编程

PHP7.4 新特性

Read more   2020/09/02 posted in  编程

Message: Illegal string offset

示例

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

$a = '';

echo $a['k'];

// Warning: Illegal string offset 'k'

$a = [];

echo $a['k'];

// Notice: Undefined index: k

Read more   2020/05/27 posted in  折腾

win10 搭建 php + apache 开发运行环境

我服了,作为一个4年的老 phper,当我想在 windows 上手动搭建环境还是遇到了好多问题,所以通过这篇记录下来,不要每次都是重新开始,每一次都要蹚一遍所有的坑!

php

在官网这个地址 https://windows.php.net/download/ 下载已编译好的php程序。里面同时提供了多个版本,当然选最新版的 php7.4,然后在 php7.4 里面又提供了4个版本,分别是:

  • VC15 x64 Non Thread Safe
  • VC15 x64 Thread Safe [√]
  • VC15 x86 Non Thread Safe
  • VC15 x86 Thread Safe

真是选择困难症啊,首先,win10是64位的,那肯定选x64,其次使用的是 apache,所以选择 thread safe 版本(原因请参考1),所以最终选择 VC15 x64 Thread Safe。如下图1所示,点击下载那个 zip 压缩文件。直接浏览器下载比较慢,所以我把地址复制到迅雷下载会快很多。

Read more   2020/05/17 posted in  折腾

php bool 与 boolean 的区别

boolean is an alias for bool, and aliases don't work in type hints.
Use the "real" name: bool

参考

2020/04/28 posted in  编程

日常问题之收集:PHP篇(持续更新)

Read more   2020/01/01 posted in  FAQs

《Modern PHP》 - 笔记1 - 最佳实践

过滤、验证和转义数据

过滤数据

  • 不要相信任何外部数据!
  • 常见的有以下几种数据需要过滤:HTML,SQL查询,用户提交的信息(邮件地址、电话号码、身份证)

HTML

SQL queries

  • PDO
Read more   2019/04/03 posted in  编程

PHP数组及其最佳实践

在这篇教程里,我将使用实际的例子来介绍一些常用的PHP数组及其最佳实践。每个PHP开发者都必须知道如何使用他们,并且组合使用这些数组函数写出可读性好、简洁的代码。

基本

让我们从最基本的处理数组键值的函数开始吧。首先是 array_combine(),它使用一个数组做键,一个数组做值,创建一个新的数组:

$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];
 
$array = array_combine($keys, $values);
print_r($array);
 
// Array
// (
//     [sky] => blue
//     [grass] => green
//     [orange] => orange
// )
Read more   2018/12/31 posted in  编程

PHP Generators

Overview

生成器提供了一种简易的方式来实现简单的迭代器,生成器就是简单的迭代器,相比较定义类实现Iterator接口的方式,其性能开销和复杂性大大降低。

一个生成器可以让你直接用foreach()迭代其中的一组数据。可以写一个生成器函数,和普通函数只返回一次不同的是,生成器可以根据需要产生(yield)多次返回。

EXAMPLE#1:使用生成器重新实现range()函数

Read more   2018/12/19 posted in  编程

理解 php new static

今天在看 Laravel 的容器(Container)实现时,发现了这么一段突然不能理解的代码:

**
* Set the globally available instance of the container.
*
* @return static
*/
public static function getInstance()
{
    if (is_null(static::$instance)) {
        static::$instance = new static;
    }

    return static::$instance;
}
Read more   2018/08/11 posted in  编程

PHP新版本变化

世界变化真快,突然听闻 PHP 都到 7.3 版本了,7.2 还没仔细了解过呢。看到我司面试时会问到php新版本有什么特性,美名其曰考察其学习新技术的能力,我有点汗颜,自己都没有主动去了解过,实在不应该。因此,在这里立下一贴,用于记录新版本的PHP的变化,以及对实际工作的影响。

PHP 7.0

PHP7.0 号称是性能提升上革命性的一个版本。面对 Facebook 家的 HHVM 引擎带来的压力,开发团队重写了底层的 Zend Engine,名为 Zend Engine 2。

虽然是大版本的更新(直接从PHP5.6跳到了7,中间省略了不存在的6),但是几乎不会遇到兼容性的问题,不会像 Python 那样陷入 2.7 或 3.7 的选择困境。我们自己在评估测试了实际项目运行情况之后,直接升到了 7.1。

下面讲一讲主要的变化:

Read more   2018/06/01 posted in  编程

一文彻底解决Ubuntu上PHP的安装以及版本切换

Ubuntu上官方的源,比如 Ubuntu14.04 默认源中的是 PHP5.6.x、Ubuntu16.04 默认源中的是 PHP7.0.x,那么如果想在 Ubuntu16.04 上安装 PHP7.1,PHP7.2,应该怎么办呢?

答案是通过第三方的源来安装,ppa:ondrej/php 是一个比较知名的PHP源(目前维护php5.6,php7.0,php7.1,php7.2)。下面就用这个源来安装自己想要的PHP版本。

Read more   2018/02/27 posted in  折腾

PHP之外观模式

外观(Facade)模式
当使用子系统的代码时,你也许会发现自己过于深入地调用子系统的逻辑代码。如果子系统代码总是在不断变化,而你的代码却又在许多不同地方与子系统代码交互,那么随着子系统的发展,你也许会发现维护代码变得非常困难。

在项目中集成复杂的第三方代码,或在系统中逐渐形成大量仅在系统自身内部有用的代码,在这些情况下,你总可以应用外观模式,为复杂的系统创建一个简单、清晰的接口。

Read more   2017/12/19 posted in  编程