Bernard 开源项目使用教程
1. 项目的目录结构及介绍
Bernard 项目的目录结构如下:
bernard/
├── bin/
├── composer.json
├── composer.lock
├── docs/
├── examples/
├── LICENSE
├── phpunit.xml.dist
├── README.md
├── src/
│ ├── Bernard/
│ │ ├── Consumer.php
│ │ ├── Driver/
│ │ ├── Envelope.php
│ │ ├── Exception/
│ │ ├── Message/
│ │ ├── Producer.php
│ │ ├── Queue/
│ │ ├── Receiver.php
│ │ ├── Router/
│ │ ├── Util/
│ │ └── Worker.php
│ └── Bernard.php
└── tests/
└── Bernard/
目录介绍
bin/
: 包含可执行文件。docs/
: 包含项目文档。examples/
: 包含示例代码。src/
: 包含项目的主要源代码。Bernard/
: 核心代码目录。Consumer.php
: 消费者类。Driver/
: 驱动接口和实现。Envelope.php
: 信封类。Exception/
: 异常类。Message/
: 消息类。Producer.php
: 生产者类。Queue/
: 队列接口和实现。Receiver.php
: 接收者类。Router/
: 路由类。Util/
: 工具类。Worker.php
: 工作者类。
tests/
: 包含测试代码。
2. 项目的启动文件介绍
Bernard 项目的启动文件位于 bin/
目录下。主要的启动文件是 bernard
,它是一个可执行文件,用于启动 Bernard 服务。
#!/usr/bin/env php
<?php
require __DIR__.'/../vendor/autoload.php';
use Bernard\Command;
use Symfony\Component\Console\Application;
$application = new Application('Bernard', Bernard::VERSION);
$application->add(new Command\ConsumeCommand());
$application->add(new Command\ProduceCommand());
$application->add(new Command\PurgeCommand());
$application->add(new Command\InspectCommand());
$application->run();
启动文件介绍
#!/usr/bin/env php
: 指定使用 PHP 解释器执行该文件。require __DIR__.'/../vendor/autoload.php';
: 引入 Composer 自动加载文件。use Bernard\Command;
: 引入 Bernard 命令类。use Symfony\Component\Console\Application;
: 引入 Symfony Console 应用类。new Application('Bernard', Bernard::VERSION);
: 创建一个 Symfony Console 应用实例。add(new Command\ConsumeCommand());
: 添加消费者命令。add(new Command\ProduceCommand());
: 添加生产者命令。add(new Command\PurgeCommand());
: 添加清除命令。add(new Command\InspectCommand());
: 添加检查命令。$application->run();
: 运行应用。
3. 项目的配置文件介绍
Bernard 项目的配置文件主要是 composer.json
,它包含了项目的依赖、脚本和其他配置信息。
{
"name": "bernard/bernard",
"description": "Bernard is a multi-backend PHP library for creating background jobs for later processing.",
"keywords": ["queue", "background jobs", "job queue"],
"homepage": "http://bernardphp.com",
"license": "MIT",
"authors": [
{
"name": "Mathias Gelhausen",
"email": "gelhausen@incenteev.io"
},
{
"name": " contributors",
"homepage": "https://github.com/bernardphp/bernard/contributors"
}
],
"require": {
"php": ">=5.5.9",
"symfony/console": "^2.7 || ^3.0",
"symfony/event-dispatcher": "^2.