分类 php 下的文章

不会吧,不会吧。都21世纪了,还有不会用 composer 的 phper?

1. 创建composer.json文件

{
    "autoload":{
        "psr4":{},
        "psr0":{},
        "files":[],
        "classmap":[]
    }
}

自动加载文件的大致架构如上。

2.psr4加载

遵循psr4规范加载,不用在文件目录中体现命名空间。composer.json 格式如下

{
    "autoload": {
    "psr-4": {
      "App\\": "app"
    }
}
app\DemoPsr4
<?php

namespace App;
class DemoPsr4
{
    public function __construct()
    {
        echo "psr4加载";
    }

}
public/index.php
<?php
require "../vendor/autoload.php";

// psr4 加载。
$p4 = new App\TestPsr4();

3. 生成自动加载文件

在运行测试前,要使用composer命令生成自动加载文件

composer dumpautoload

现在运行 index.php 。即可输出 “psr4加载” 字样

4. psr0 加载

当使用psr0规范时,需要在文件目录中创建一个和‘命名空间’名称相同的目录

composer.json
{
  "autoload": {
    "psr-4": {
      "App\\": "app"
    },
    "psr-0": {
      "Bpp\\": "bpp"
    }
  }
}
bpp/Bpp/DemoPsr0.php
<?php

namespace Bpp;
class DemoPsr0
{
    public function __construct()
    {
        echo "psr0自动加载。";
    }
}
public/index.php
<?php
require "../vendor/autoload.php";

$p4 = new App\TestPsr4();
$p0 = new Bpp\TestPsr0();

运行 composer dumpautoload 生成自动加载文件。
然后运行public/index.php,会发现 psr0 类中的输出语句执行了

5.classmap

classmap 后面是个数组,写一个目录进去。会扫描这个目录下所有的文件。生成一个 类与文件名对应的数组。可以不用遵循任何标准,可以不写命名空间,甚至类名和文件名不相同都行。

具体文件见文件 “classmap”文件夹下

6.files

上面方法都是加载‘类文件’,如果需要加载一个php文件,这个php文件里写的是函数。就要使用 files 字段了。

详细代码见文件,'helper.php'

代码地址:https://github.com/jianwi/composer_autoload.git

这是由于 mysql 版本太低造成的,你升级一下mysql就行

但是,有更省事的操作。

给 appServiceProvider 的boot 方法里添加

\Schema::defaultStringLength(191); 

这就搞定了,发个博客,方便以后复制粘贴。。。

最方便好用的 linux 操作系统,我觉得应该是 ubuntu

安装 php 扩展一直是个比较难搞的活

一般流程是,从官网下载 php 源码,解压,找到扩展,用 phpize 编译。你得清楚 php 的位置

那么 ubuntu 下的步骤呢

apt install php-pear

pecl  install 扩展

最后设置下 php.ini 就完事了。。。

比如在Ubuntu里安装 mcrypt 扩展

pecl install mcrypt

然后在 /etc/php/7.2/cli/conf.d/ 里添加 mcrypt.ini 文件。文件内容如下

extension=mcrypt.so

保存。完事