rob006/yii2-app-extended

Yii 2 扩展项目模板

dev-master 2020-02-14 11:35 UTC

This package is auto-updated.

Last update: 2024-09-14 21:15:36 UTC


README

Yii 2 扩展项目模板是一个针对 Yii 2 应用的骨架,非常适合创建小型和中型项目。

该模板基于 官方 Yii 2 基础项目模板,包含基本功能,如用户登录/注销和联系页面。除了 yii2-app-basic,它还处理特定环境的配置文件,并简化添加自定义文件头或 @author phpdoc。

目录结构

  app/assets/         contains assets definition
  app/commands/       contains console commands (controllers)
  app/controllers/    contains Web controller classes
  app/mail/           contains view files for e-mails
  app/models/         contains model classes
  app/views/          contains view files for the Web application
  app/widgets/        contains widgets classes
  config/             contains application configurations
  public/             contains the entry script and Web resources
  resources/          contains non-PHP resources
  runtime/            contains files generated during runtime
  tests/              contains various tests for the application
  vendor/             contains dependent 3rd-party packages

要求

本项目模板的最小要求是您的 Web 服务器支持 PHP 7.1.0。

安装

通过 Composer 安装

安装此模板的首选方式是通过 Composer。如果您还没有安装它,您可以按照 getcomposer.org 上的说明进行安装。

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

composer create-project --prefer-dist rob006/yii2-app-extended application

现在您应该可以通过以下 URL 访问应用程序,假设 application 是 Web 根目录下的直接目录。

https:///application/public/

使用 Docker 安装

更新您的供应商包

docker-compose run --rm php composer update --prefer-dist

运行安装触发器(创建 cookie 验证代码)

docker-compose run --rm php composer install    

启动容器

docker-compose up -d

然后您可以通过以下 URL 访问应用程序

http://127.0.0.1:8000

注意

  • 最低要求的 Docker 引擎版本为 17.04(开发用,请参阅 卷挂载的性能调整
  • 默认配置使用主机卷在您的家目录 .docker-composer 中为 composer 缓存

安装后设置

安装后,您应该执行一些步骤来自定义项目以满足您的需求

  1. 将项目中的所有 PHP 文件中的 /* {licenseheader} */ 语句替换为您的自定义文件头。您也可以将其删除,如果您不希望在项目中包含文件头。

  2. 将项目中的所有 PHP 文件中的 {author} 语句替换为您的姓名和电子邮件地址(例如 John Doe <john@example.com>)- 这将为项目中的所有现有类的 phpdoc 设置 @author 标签。

  3. 根据您的项目设置调整 composer.json 文件。

  4. 将包含您的项目许可的 LICENSE 文件添加到项目的根目录。

配置

特定环境的配置文件

模板支持特定于指定环境的配置。例如,config/1-web.php 包含 Web 应用的配置覆盖,而 config/2-prod.php 包含生产环境的配置。这允许您通过创建更通用的配置并在指定环境中覆盖它来避免配置重复。例如,对于 prod 环境中的 Web 应用程序,应用程序按照以下顺序读取和合并配置(有关详细信息,请参阅 ArrayHelper::merge()

  1. config/0-main.php.
  2. config/1-web.php.
  3. config/2-prod.php.
  4. config/3-local.php.

默认情况下,处理两种类型的环境

  1. dev - 开发者在应用程序开发中使用。默认情况下,它包含一些在开发期间有用的工具,如调试工具栏或 Gii。
  2. prod - 生产环境。

但您可以通过在 config 目录中创建指定文件轻松添加新环境。

更多关于环境的信息,您可以在维基百科中找到。

环境设置存储在config/env-local.php(文件在从config/env-local.php模板中创建时生成)。您可以通过编辑此文件来切换环境(该文件被版本控制系统忽略,因此环境设置仅适用于本地安装)。默认环境是dev - 在生产部署时请确保将其切换到prod

本地配置文件

通常,每个应用程序都有一些配置不应在不同安装之间共享,并且不应存储在版本控制系统中,例如个人密钥或特定于特定服务器的配置。在config目录中,您可以找到一系列以-local.php为前缀的配置文件 - 这些文件专门用于存储此类配置。这些本地配置已添加到.gitignore中,并且永远不会被推送到源代码仓库,因此您可以使用它安全地覆盖一些通用配置。您可以使用config/3-local.php来覆盖一些通用配置。

config/templates目录中,您可以找到本地配置文件的模板。在第一次运行composer install时,这些文件将被复制到config目录。您可以编辑这些模板以调整本地配置文件的默认内容,但您不应在模板中存储任何私人数据 - 这些数据应在安装后放入config/*-local.php文件中。

数据库

使用真实数据编辑文件config/db-local.php,例如

return [
    'class' => yii\db\Connection::class,
    'dsn' => 'mysql:host=localhost;dbname=yii2app',
    'username' => 'root',
    'password' => '1234',
    'charset' => 'utf8mb4',
];

Yii不会为您创建数据库,您必须手动创建它才能访问它。

测试

测试位于tests目录中。它们使用Codeception PHP 测试框架开发。默认情况下,有3个测试套件

  • 单元测试
  • 功能测试
  • 验收测试

可以通过运行以下命令来执行测试

vendor/bin/codecept run

上述命令将执行单元测试和功能测试。单元测试测试系统组件,而功能测试用于测试用户交互。验收测试默认禁用,因为它们需要额外的设置,因为它们在真实浏览器中执行测试。

运行验收测试

要执行验收测试,请执行以下操作

  1. tests/acceptance.suite.yml.example重命名为tests/acceptance.suite.yml以启用套件配置

  2. 使用Composer更新依赖项

    composer update
  3. 下载Selenium 服务器并启动它

    java -jar ~/selenium-server-standalone-x.xx.x.jar

    如果使用Selenium 3.0与Firefox浏览器从v48或Google Chrome从v53开始,您必须下载GeckoDriverChromeDriver并使用它启动Selenium

    # for Firefox
    java -jar -Dwebdriver.gecko.driver=~/geckodriver ~/selenium-server-standalone-3.xx.x.jar
    
    # for Google Chrome
    java -jar -Dwebdriver.chrome.driver=~/chromedriver ~/selenium-server-standalone-3.xx.x.jar
    

    作为另一种方法,您可以使用已经配置的带有较旧版本Selenium和Firefox的Docker容器

    docker run --net=host selenium/standalone-firefox:2.53.0
    
  4. (可选) 创建yii2_app_tests数据库,并根据需要应用迁移来更新它。

    tests/bin/yii migrate
    

    数据库配置可以在tests/config/db-local.php中找到。

  5. 启动Web服务器

    tests/bin/yii serve
  6. 现在您可以运行所有可用的测试

    # run all available tests
    vendor/bin/codecept run
    
    # run acceptance tests
    vendor/bin/codecept run acceptance
    
    # run only unit and functional tests
    vendor/bin/codecept run unit,functional

代码覆盖率支持

默认情况下,在codeception.yml配置文件中禁用了代码覆盖率,您应该取消注释所需的行以便能够收集代码覆盖率。您可以使用以下命令运行测试并收集覆盖率

# collect coverage for all tests
vendor/bin/codecept run -- --coverage-html --coverage-xml

# collect coverage only for unit tests
vendor/bin/codecept run unit -- --coverage-html --coverage-xml

# collect coverage for unit and functional tests
vendor/bin/codecept run functional,unit -- --coverage-html --coverage-xml

您可以在tests/_output目录下查看代码覆盖率输出。