peterfox/hexavel

Hexavel 框架

安装: 32

依赖: 0

建议者: 0

安全: 0

星标: 7

关注者: 5

分支: 1

开放问题: 1

类型:项目

5.3.2 2016-12-19 00:30 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:36:47 UTC


README

Hexavel 是 Laravel 的重构版本,旨在提供更好的工作流程,简化开发过程。

安装

要使用 composer 安装,请使用以下命令

composer create-project --prefer-dist peterfox/hexavel <name of your project>

与 Laravel 有何不同?

文件结构

Hexavel 使用了一个广泛更改的文件系统,用于从 Laravel 生成一个工作应用程序。每个文件夹都有解释,这样您可以了解在哪里找到或放置自己的工作。

二进制文件(bin)

这是放置所有控制台应用程序的地方,包括 artisan 控制台和通过 composer 安装的二进制文件。所有 artisan 的命令都像 Laravel 一样工作,但现在您必须从应用程序的根目录使用 bin/artisan

源代码(src)

这是放置我们的基础 PHP 应用程序代码的地方,使用默认命名空间 \App。

应用程序(app)

目前,这仅存储我们的应用程序配置和路由文件。

支持

这是我们与 Laravel 的最大不同之处。支持就是其名字的含义,是一个用于存放所有支持我们应用程序开发文件的目录。这包括默认的视图、资产、语言文件、测试和迁移。

还有一个支持包文件夹,这是您可能正在开发或作为项目一部分开发的本地包的推荐位置,可以通过 composer 加载。

变量(var)

变量目录实际上是我们应用程序的可写目录。所有缓存和应用程序写入的数据都应存储在此目录下。例如,引导缓存、日志或 sqlite 数据库。

六边形架构

六边形架构是一个简单的概念的华丽名称,您应该将代码分成框架、领域以及您的应用程序交互的服务和库之间的连接。

Laravel

与您的应用程序核心相关联的代码,在本例中是 Laravel 特定代码,如服务提供者或控制器。

桥接

与应用程序使用的服务或库相关联的代码。

领域

与您的业务需求相关联且与桥接和框架分开的代码。

内置的存储库模式

存储库模式非常重要,当您使用 Eloquent 创建模型时非常有用。为了简化这一点,包含了一个服务提供程序,它允许您将模型映射到存储库,并将领域中的存储库接口映射到模型接口。

示例存储库

namespace App\Bridge\Eloquent;

use App\Bridge\Eloquent\Model\User;
use App\Domain\AuthenticatableRepository as AuthenticatableRepositoryInterface;
use Hexavel\Repository\EloquentRepository;
use Illuminate\Contracts\Auth\Authenticatable;

class AuthenticatableRepository extends EloquentRepository implements AuthenticatableRepositoryInterface
{
    public function getModel()
    {
        return User::class;
    }

    /**
     * @param string $email
     * @return Authenticatable
     */
    public function findByAuthIdentifier($email)
    {
        return $this->model->where('email', $email)->first();
    }
}

然后将模型和存储库添加到服务提供程序中。

namespace App\Laravel\Providers;

use App\Bridge\Eloquent\Model\User;
use App\Bridge\Eloquent\AuthenticatableRepository;
use App\Domain\AuthenticatableRepository as AuthenticatableRepositoryInterface;
use Hexavel\Support\Providers\RepositoryProvider as ServiceProvider;

class RepositoryServiceProvider extends ServiceProvider
{

    /**
     * @return string[]
     */
    protected function getModelRepositories()
    {
        return [
            AuthenticatableRepository::class => User::class
        ];
    }

    /**
     * @return string[]
     */
    protected function getRepositories()
    {
        return [
            AuthenticatableRepositoryInterface::class => AuthenticatableRepository::class
        ];
    }
}

测试

测试是您正在开发的任何良好应用程序的重要组成部分。Hexavel 包括使用 BehatPHPSpec 的简单设置,以便您可以测试您开发和功能。

Behat

您的功能文件可以创建在 support/features 下,而测试套件的功能上下文在 support/context 下。您可以通过 bin/behat 或通过调用 gulp behat 来运行测试。

为了使代码分离更容易,该设置已准备好使用 页面模式 作为通过 Behat 测试应用程序交互的方式。

PHPSpec

类规范存储在support/spec目录中,可以通过使用phpspec命令bin/phpspec desc <Namespace\\Class>简单地创建它们,然后您可以调用bin/phpspec rungulp phpSpec来执行测试。

警告

并非所有为Laravel开发的包都能直接与Hexavel兼容。大部分可以,除非它们将代码安装到您的项目中。Laravel Spark就是这样一个例子,当它使用多个占位符并添加资产等。

其他资源