liziyu 发布的文章

真正的好朋友,互损不会翻脸,疏远不会猜疑,出钱不会计较,地位不分高低,成功无需巴结,失败不会离去。奋斗的时候搭把手,迷茫的时候拉一把,开心的时候干一杯,难过的时候抱一下。一起走吧,趁将来未来,趁热情未冷。——致我们真挚的友情

共同之处是:

1、都是遍历数据每个元素;
2、回调的参数都相同都支持元素主键
3、其中回调函数中的this指向的是window对象;

不同的地方是:

map()会分配内存生成并返回新数组。
forEach()可以更改原数组元素值。

使用场景:

froEach()而只是想用数据做一些事情时,并调用回显之用。
map()适用于生成并生成新数组,原数组不变,它的性能要比forEach()要高。

简单粗暴更直接:

   /**
     * 自定义token
     * @param null $userId
     * @param null $roles
     * @param int $timeout
     * @return string
     */
    protected function setToken($userId = null, $roles = null, $timeout = 0) :string
    {
        $year = 1984;
        $time = time();
        return $roles.'.'.md5($time).'.'.$year + $userId.'.'.$time.'.'. $timeout;
    }


通用

序号 名称 描述
1 chinese(simplified ...) 简体中文语言包
2 live server html 实时预览
3 prettier-code formatter 最流行的代码格式化插件
4 better comments 自定义注释颜色
5 path intellisense 路径自动感知填充
6 helium icon theme 一款我喜欢的文件图标主题
7 one dark pro 经典的主题,使用者众多,很耐看
8 material theme 经典"材料"主题
9 material theme icons 常与material theme配置的文件图标
10 shades of purple 赛博朋克风格的一款主题,很明亮风骚
11 dracula official 经典的吸血鬼主题
12 dracula at night 个人更喜欢这款小众的吸血鬼暗黑版(教学用它)
13 code runner 几乎可以快速运行常见的所有语言,如php,java,js...
14 codesnap 快速生成苹果电脑风格的代码片断截图,分享时使用

Markdown

序号 名称 描述
1 markdown preview... markdown 实时预览
2 markdownlint markdown 语法检查器

HTML

序号 名称 描述
1 auto close tag 标签自动关闭
2 auto rename tag 标签自动更名
3 indent-rainbow 以不同颜色显示代码缩进
4 css peek 查看并跳转到 css 定义位置
5 html css support css 自动智能补齐
6 intellsense for css ... html 中的 css 智能提示
7 easy less less 实时编译
8 px-to-viewport px 自动转 vw
9 svg preview svg 预览器
10 tailwind css ... 无需离开 html 就可快速构建出现代网页
11 tabout 按 tab 就可快速跳到下一下,或跳出/越过括号等

JS/VUE/ES6

序号 名称 描述
1 bracket pair ... 括号高亮配对提示
2 javascript(es6) code snippets 常用 js 代码片断
3 node-snippets 常用 node 代码片断
4 quokka.js js/es6 代码语法实时检查/执行器(续命法宝)
5 rest client 可不离开 vscode 环境进行 api 请求测试
6 eslint js 代码质量智能分析器
7 vetur vue 语法高亮,智能感知,emmet 等
8 vue3 snippets vue3 常用代码片断
9 vue-helper: vue-helper 在扩展中使用的 vue 提示,如 element ui

PHP常用

序号 名称 描述
1 php intelephense php 语法提示/自动补齐
2 php intellisense php 代码跟踪/重构/自动完成
3 php debug php 代码调试器
4 php docbloker php 生成块级注释
5 vscode-database vscode 数据库 SQL 支持插件

编程常用字体

字体名称 描述 支持连写
Fira Code 喜欢的真喜欢,讨厌的真讨厌 支持
JetBrains Mono JetBrains 出品,免费 支持

字体安装成功后,还需要在 vscode 中进行配置: settings.json

# 将Fira Code 字体放在第一个
"editor.fontFamily": "'Fira Code',Consoles, 'Courier New', monospace",

# 打开允许连写开关
"editor.fontLigatures": true,

本文来自:@PHP中文网公众号

一、单一类型

类型说明版本
类/接口名称值必须为指定类和接口的实例化对象 instanceof
self值必须是用于类型声明相同类的 instanceof 。 仅可在类中使用。
parent值必须是用于类型声明父级类的 instanceof , 仅可在类中使用。
array值必须为 array。
callable值必定是一个有效的 callable。 不能用于类属性的类型声明。
bool值必须为一个布尔值。
float值必须为一个浮点数字。
int值必须为一个整型数字。
string值必须为一个 string。
iterable值必须为 array 或 instanceof Traversable。PHP 7.1.0
object值必须为object。PHP 7.2.0
mixed值可以为任何类型。PHP 8.0.0

二、允许为空的(Nullable)类型

自 PHP 7.1.0 起,类型声明允许前置一个问号 (?) 用来声明这个值允许为指定类型,或者为 null。

三、复合类型

还可以组合简单类型为复合类型。 PHP 支持以下方式复合类型:

  1. 简单类型联合。PHP 8.0.0 起可用。
  2. class-type(接口、类名)类型交集。PHP 8.1.0 起可用。

四、仅仅返回类型

void 是一个返回类型,用于标识函数没有返回值。 它不能是联合类型的一部分。 PHP 7.1.0 起可用。

https://www.php.net/manual/zh/language.types.declarations.php

1.数据查询语言(DQL)

数据查询语言(Data Query Language, DQL)保留字SELECTFROMWHEREGROUP BYHAVINGORDER BY(查询操作)。

2.数据定义语言(DDL)

数据定义语言 (Data Definition Language, DDL) CREATEALTERDROP三个语法所组成(对表结构操作)。

3.数据操纵语言(DML)

数据操纵语言(Data Manipulation Language, DMLINSERTUPDATEDELETE三种指令为核心(对表内数据操作)。

4.数据控制语言(DCL)

数据控制语言 (Data Control Language) 由 GRANTREVOKE 两个指令组成(权限管理)。

5.指针控制语言(CCL)

它的语句,像DECLARE CURSORFETCH INTOUPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

6.事务处理语言(TPL)

包括BEGIN TRANSACTIONCOMMITROLLBACK(事务控制)。

一般来说在Worker::runAll();调用前运行的代码都是在主进程运行的,onXXX回调运行的代码都属于子进程。注意写在Worker::runAll();后面的代码永远不会被执行。

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// 运行在主进程
$tcp_worker = new Worker("tcp://0.0.0.0:2347");
// 赋值过程运行在主进程
$tcp_worker->onMessage = function(TcpConnection $connection, $data)
{
    // 这部分运行在子进程
    $connection->send('hello ' . $data);
};

Worker::runAll();

注意代码中的注释哦!

注意:
1、不要在主进程中初始化数据库、memcacheredis等连接资源,因为主进程初始化的连接可能会被子进程自动继承(尤其是使用单例的时候),所有进程都持有同一个连接,服务端通过这个连接返回的数据在多个进程上都可读,会导致数据错乱。同样的,如果任何一个进程关闭连接(例如daemon模式运行时主进程会退出导致连接关闭),都导致所有子进程的连接都被一起关闭,并发生不可预知的错误,例如mysql gone away 错误。

2、推荐在onWorkerStart里面初始化连接资源。

转自:http://www.workerman.net

报错完整信息为:

Deprecated: Method ReflectionParameter::getClass() is deprecated in /vendor/topthink/think-container/src/Container.php on line 450
Script @php think service:discover handling the post-autoload-dump event returned with error code 255

这是因为在PHP8.0以后反射类ReflectionParameter::getClass() 已弃用,变更为getType()
只要找到文件vendor/topthink/think-container/src/Container.php修改替换即可。
如下图:
QQ20220215-172931@2x.png

详情见:https://github.com/top-think/framework/commit/df4a07d2f51307a6fabdf75dc5b4b7f8b0ad8af8