使用Composer组织PHP应用

去对于php小应用开发,如果不基于框架,包管理一般都比较粗犷,使用composer来管理,不仅结构清晰,用起来也方便许多。

新建项目composer-example

项目目录下新建composer.json,内容如下:

1
2
3
4
5
{
  "require": {
    "monolog/monolog": "^1.25"
  }
}

然后终端执行

composer install

执行完成后,目录结构如图: composer-example1.png

下面开始应用开发,目录结构如图:

composer-example2.png

composer.json 文件内容更新为

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "require": {
    "monolog/monolog": "^1.25"
  },
  "autoload": {
    "psr-4": {
      "App\\": "app/"
    }
  }
}

执行:

composer install

相关代码

index.php

1
2
3
4
5
6
7
<?php

require __DIR__.'/../vendor/autoload.php';

use App\Library\Logs;

Logs::info('test', 'index', ['test' => "logs"]);

对日志模块进行简单封装

Logs.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

namespace App\Library;

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

/**
 * Class Logs
 * @package App\Library
 */
class Logs
{
    /**
     * 记录日志
     * @param $fileName
     * @param $msg
     * @param array $content
     */
    public static function info($fileName, $msg, array $content)
    {
        $log = new Logger('api-test');
        $log->pushHandler(new StreamHandler(__DIR__.'/../../logs/'.$fileName.'-'.date("Y-m-d").'.log', Logger::DEBUG));
        $log->info($msg, $content);
    }
}

验证结果

终端执行:

1
php app\index.php

日志文件已经写入了,后续可以基于现有结构做些其他有趣开发。

updatedupdated2020-05-082020-05-08
Load Comments?