PHP

获取本年的12个月

 $startDate,
        "end_date" => $endDate
    );
}
dd($monthRanges);
图片.png

php 安装扩展

php有两个配置文件 , 以当前docker环境为例 ,安装的php版本是7.3.32

php pecl安装扩展

去网站搜索想要的扩展 https://pecl.php.net/
找到合适的版本 下载下来

linux 系统下载扩展 
cd ~
wget https://pecl.php.net/get/gmagick-2.0.5RC1.tgz

不用解压,直接使用pecl命令安装

pecl install gmagick-2.0.5RC1.tgz

出现
lease provide the prefix of GraphicsMagick installation [autodetect] :
直接回车
后续报错自行百度

php7.3 zip扩展

composer安装三方包时报错phpoffice/phpspreadsheet 1.10.1 requires ext-zip *

图片.png

zip扩展可以通过编译 ,php7.3为例 zip的扩展源码位置在/www/server/php/73/src/ext/zip目录
编译完成后得到文件
/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/zip.so
在php.ini和php-cli.ini中分别加入

extension = /www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/zip.so

注意:
用composer安装三方扩展时 ,使用的是php-cli.ini ,

php-cli使用的配置文件.png

处理http请求的php-fpm的work进程使用的是php.ini

替换/删除 mysql某字段中的指定字符

图片.png
update 表名 set 字段名 = replace(字段名,'被替换的字符','替换为')

update member set headpic = REPLACE(headpic,':33380','')

替换为空字符 ,则删除了字段中的被替换的字符


图片.png

model时间格式化
解决laravel数据库取出的数据,created_at,updated_at字段,时间格式问题

    /**
     * 格式化时间
     * @param \DateTimeInterface $date
     * zhangyi [2022-12-12]
     * @return string
     */
    protected function serializeDate(\DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

生成迁移文件

php artisan make:migration create_table_demo

执行单个迁移

php artisan migrate --path=database\migrations\2021_10_13_153021_create_jobs_table.php

回滚一步迁移

php artisan migrate:rollback --step=1

生成repository

php artisan core:model --table=users --name=User

清除视图缓存

php artisan view:clear

创建命令行脚本

php artisan make:command 自定义名称(生成的文件名)

在app->console->commands目录内找到脚本文件 ,修改属性 $signature = '自定义名称'(脚本启动名称) ,在handle方法内写逻辑
启动脚本

php artisan 自定义名称($signature)

composer

更新指定的包composer u 包名

composer autoload使用

自己写的vendor包 ,应用到项目后 如何自动加载

  1. 类文件需要声明命名空间,并且根据规范 ,目录结构与命名控件对应
包的项目目录.png
  1. 在项目的composer.json中加入autoload相关内容 ,此处使用的psr-4规范
    composer.json.png

    "autoload": { "psr-4": { "utils\\": "./" } }
    解释:
    "psr-4"规范,具体百度
    "utils\\"自定义的顶级命名空间
    "./"对应的类文件路径
  2. 命令行执行composer dumpautoload -o 更新自动加载文件
    4.测试 可以正常执行
    图片.png

    说明:
    此处测试需要手动require_once __DIR__."/vendor/autoload.php";
    一般框架的index.php文件已经引入了autoload.php,所以框架项目中只需通过composer安装三方包 ,就能直接用.

重新生成autoload

composer dumpautoload

三方包网站

http://packagist.p2hp.com/

composer更换镜像

查看镜像

全局
composer config -l -g
当前项目
composer config -l

更换当前项目镜像

全局
composer config -g repo.packagist composer ${镜像地址}
当前项目
composer config repo.packagist composer ${镜像地址}

| 阿里云 Composer 镜像 | https://mirrors.aliyun.com/composer/ | 阿里云 | 96 秒 | 推荐 |
| 腾讯云 Composer 镜像 | https://mirrors.cloud.tencent.com/composer/ | 腾讯云 | 24 小时 | - |
| PHP 国内 Composer 镜像 | https://packagist.phpcomposer.com | 仁润股份 | 24 小时 | 不稳定 |
| 华为云 Composer 镜像 | https://repo.huaweicloud.com/repository/php/ | 华为云 | 未知 | 未知 |
| php.cnpkg.org Composer 镜像 | https://php.cnpkg.org | 安畅网络 | 60 秒 | - |

composer三方包的搜索网站

packagist

卡死

安装三方包时卡在Updating dependencies (including require-dev)
一般都是镜像问题 ,composer官网给的镜像不能用 ,换成阿里云的镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

切换镜像无效

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/不一定能切换成功

在项目根目录下找到composer.json文件 ,切换成功应该是

图片.png

或者直接把下边代码粘贴到composer.json文件

    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }

内存溢出

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 67108872 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/RuleSet.php on line 84
官方有解决方案

注意 即使配置了composer全局环境变量也不行 必须用composer.phar文件绝对路径

php -d memory_limit=-1 ${composer.phar 绝对路径} require ${包名}

如:

php -d memory_limit=-1 C:\ProgramData\ComposerSetup\bin\composer.phar require phpoffice/phpspreadsheet

laravel创建命令行脚本

php artisan make:command 自定义名称(生成的文件名)

在app->console->commands目录内找到脚本文件 ,修改属性 $signature = '自定义名称'(脚本启动名称) ,在handle方法内写逻辑
启动脚本

php artisan 自定义名称($signature)

phpstorm多行变成一行

有时候拿到一部分数据ID ,需要在数据库进行批量处理 .
比如对下边的用户ID进行封号


图片.png

解决

在phpstorm中新建一个普通文本文件 , 把excel中的一列粘贴进去


图片.png

1. Ctrl + a 全选

2. Ctrl + Shift + j 多行变成一行,空格分割

3. Ctrl + r 替换 空格为想要的字符

图片.png

完成

图片.png

phpspreadsheet 导出微信昵称数据丢失

遇到昵称带表情的用户数据后 ,接下来的很多表格都变成了空白 .实际上数据是存在的


图片.png

解决方法 ,生成的excel文件后缀 ,由xsl 改为更高版本的 xslx ,便可恢复正常

判断数组值是否存在

经常需要判断前端传过来的筛选参数, 如果存在有效值 sql中 就增加筛选条件
判断前端是否传了有效参数 ,当参数是数字 0 时 筛选状态为0的数据 经常出现问题

$arr['status'] = 0;  

判断数组$arr中是否有某个参数

返回false
$arr['key'] = null
$arr['key'] = false
$arr['key'] = ''
$arr['未定义索引']
返回true
$arr['key'] = 0
$arr['key'] = '0'
$arr['key'] = 'null'
$arr['key'] = 'false'

    /**
     * 判断数组中是否存在某个有效参数
     * @param array $arr 数组
     * @param string $key 索引
     * @return bool
     */
    function hasVal($arr,$key){
        if (!is_array($arr)) return false;
        
        if (array_key_exists($key , $arr)){
            if (
                $arr[$key] !== '' &&
                $arr[$key] !== false &&
                $arr[$key] !== null
            ){
                return true;
            }
        }
        return false;
    }

找出一维数组中重复的值
通过in_array()判断

        $temp = [];
        foreach ( $list as $val ) {
            if ( !in_array($val , $temp) ) {
                $temp[] = $val;
                continue;
            }
            throw new \Exception("值:{$val}重复");
        }

你可能感兴趣的:(PHP)