2021年4月

简单的闭包(匿名函数)

function test_closure($name, Closure $clo){
    echo 'Hello {$name} ';
    $clo();
}

test_closure('Lily', function() {
    echo ' you are like...';
});

class A 
{
    private static $_instance = null;
    
    private function __construct(){}
    
    private function __clone(){}
    
    public static function getInstance()
    {
        if(! (self::$_instance instanceof self)){
            self::$_instance = new self();
        }
        return self::$_instance;
    }
}

$obj = A::getInstance();

记录下:

self 在本类中使用,只代表类本身。
$this 只有将类实例化以后才存在,指向类的实例。
static 当类中使用此关键字定义属性与方法时,在调用它时只要用类别::调用,因为它只属于类而非实例。

关于后期静态绑定,如下:

self2.png

static2.png

更新中间表记录

如果你需要在中间表中更新一条已存在的记录,可以使用 updateExistingPivot 。此方法接收中间表的外键与要更新的数据数组进行更新:

$user = App\Models\User::find(1);

$user->roles()->updateExistingPivot($roleId, $attributes);

一、安装redis扩展

进入php目录,以php7.4.21为例

$  cd /Applications/MAMP/bin/php/php7.4.21

1.在当前目录下载phpredis安装包

$  git clone https://github.com/nicolasff/phpredis.git

2.执行phpize命令,生成.configure可执行文件

$  cd phpredis
$  phpize

3.编译安装

$  ./configure --with-php-config=/Applications/MAMP/bin/php/php7.4.21/bin/php-config
$   make

4.这时phpredis/modules下会生成redis.so,把它复制到对应扩展目录下

5.复制redis.so到扩展目录

$  sudo cp -p modules/redis.so  /Applications/MAMP/bin/php/php7.4.21/lib/php/extensions/no-debug-non-zts-20190902/

然后把redis拓展加到php.ini里,这里非常注意坑,对应的位置在/Applications/MAMP/bin/php/php7.4.21/conf/php.ini 里增加:

//php.ini
...
extension=redis.so
...

二、最后安装redis(上面只是编译redis.so

$   brew install redis

三、启动redis如下(brew services start redis)

To have launchd start redis now and restart at login:
  brew services start redis
Or, if you don't want/need a background service you can just run:
  redis-server /usr/local/etc/redis.conf

四、设置redis在后台运行

$  sudo vim  /usr/local/etc/redis.conf

如下图,
redis.png
daemonize改为yes,表示需要后台开启服务器端。原来默认是no,然后ESC+:wq保存退出。

参考:https://www.it610.com/article/1288352079018008576.htm

php设计模式 http://www.imooc.com/learn/236
php异常,错误处理 http://www.imooc.com/learn/380