dersonsena/yii2-skeleton

yii2基本模板的新方法

2.0 2022-03-03 20:42 UTC

This package is auto-updated.

Last update: 2024-08-29 05:49:41 UTC


README

Yii 2 Skeleton


Yii 2 Skeleton 是基于 Yii 2 开发的设计骨架的新方法。

创建这个新模板的动机是为了尝试在 src 目录内组织包,将所有类放在那里,即主要应用程序代码所在的位置。

需求

本项目模板的最低要求是您的 Web 服务器支持 PHP 8+。

资源

  • Nginx + PHP 8.1 通过 Docker 使用 Webdevops 镜像
  • PHP Unit 9.5
  • Yii2 Bootstrap 5 扩展
  • PHP Codesniffer 3.5
  • PHP Codesniffer Fixer 3

安装

通过 Composer 安装

如果您没有 Composer,您可以通过访问 getcomposer.org 上的说明进行安装。

然后,您可以使用以下命令安装此项目模板

php composer.phar create-project dersonsena/yii2-skeleton skeleton

您的环境变量

复制 .env.sample 文件,您可以在终端中使用 cp .env.sample .env 来执行此操作。

您可以在 .env 文件中放置您的环境设置,如下所示(注意样本文件已准备好基本使用)

# ---------
# Docker
# ---------
PROJECT_NAME=yii2-skeleton
DOCKER_APP_PORT=8080
DOCKER_APP_SSL_PORT=443
DOCKER_MYSQL_PORT=3306
XDEBUG_REMOTE_PORT=9000

# ---------
# Application
# ---------
YII_ENV=dev
YII_DEBUG=true
REQUEST_COOKIE_VALIDATION_KEY=YOUR_VALIDATION_KEY
ADMIN_PASSWORD=
# APP_TIMEZONE=America/Sao_Paulo
# APP_LANGUAGE=pt_BR
APP_BASE_URL=https://:8088

# ---------
# Database
# ---------
DB_HOST=your-db-host
DB_USERNAME=root
DB_PASSWORD=secret
DB_DATABASE=your-db-name
DB_DATABASE_TEST=your-test-db-name
DB_SCHEMA_CACHE_DURATION=60

# ---------
# Mailer
# ---------
SMTP_HOST=
SMTP_PORT=465
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_ENCRYPTION=ssl

注意:注释中的环境变量是可选的,您在此处设置的值是其默认值。

运行您的应用程序

在更改任何内容之前,将 PROJECT_NAME 环境变量更改为您的项目名称/别名。这个名称将被用于前缀应用程序容器和其他内容。

要启动您的应用程序并启动容器,只需运行以下命令

make run

上述命令将启动 2 个 Docker 容器: yii2-skeleton-app(Nginx + PHP 8.1)和 yii2-skeleton-db(MySQL)

如果您已设置 DOCKER_APP_PORT 环境变量为 8000,则可以通过以下 URL 访问您的应用程序

https://:8000

COHESIVE CONTROLLER

为了遵循最佳编程实践,此模板具有一种名为 CohesiveController 的控制器类型,以帮助您创建一个具有单个操作(即 handle() 方法)和单个职责的控制器类。

要创建一个统一的控制器,请转到 config/routes.php 并添加您的路由,如下所示

<?php

return [
    // other routes...

    'specific/route/to/cohesive/a/controller' => 'cohesive-xpto-routine'
];

下一步是创建您的 CohesiveXptoRoutineController 类,从 App\Core\Controller\CohesiveController 继承并实现 handle() 方法,如下所示

<?php

namespace App\Controllers;

use App\Core\Controller\CohesiveController;

class CohesiveXptoRoutineController extends CohesiveController
{
    public function handle()
    {
        // your cohesive and specific implementation here =)
    }
}

最后,访问您的统一操作:https://:8080/specific/route/to/cohesive/a/controller

THE USEFUL MAKEFILE

Makefile 文件包含多个命令,有助于日常工作。您可以在容器内执行命令,只需在终端中输入几个字母。

如果您想安装或更新应用程序的依赖项,您应该做类似以下的事情

docker exec -it YOUR_CONTAINER_NAME composer install -o

为了避免编写所有这些,请使用 make

make install

感谢 @wilcorrea 向我展示这个简单但实用的方法。

骨架的 makefile 包含以下命令

  • install

    使用优化自动加载参数执行 composer install
    示例: make install

  • require

    使用PACKAGE参数执行composer require
    示例: make PACKAGE="vendor/package" require

  • dump

    运行composer命令 dump-autoload
    示例: make dump

  • migrate

    别名,用于在应用容器中执行yii migrate并运行所有未应用迁移
    示例: make migrate

  • migrate-create

    在项目中创建一个新的迁移
    示例: make NAME="my-cute-migration" migrate-create

  • migrate-down

    回滚最后一个迁移
    示例: make migrate-down

  • cache-clear

    只需在应用容器中运行yii cache/flush-all
    示例: make cache-clear

  • db-backup

    在项目根目录生成一个backup.sql,进行热备份
    示例: make db-backup

  • db-restore

    将项目根目录中的backup.sql导入到数据库容器
    示例: make db-restore