earthit/php-template-project

0.9.1 2016-07-07 03:51 UTC

README

此 README 由 PHPProjectInitializer 自动生成。如果此段落仍然存在,这通常意味着还没有人为此项目编写特定的文档。

另请参阅

文件夹结构

  • composer.json - PHP 包和依赖信息,由 Composer 使用。
  • package.json - Node 包和依赖信息,由 NPM 使用。
  • init-*.php - 初始化 PHP 全局状态的脚本。
  • src/db-migrations/ - 数据库脚本
    • upgrades/ - 构建模式所需运行的升级
    • test-data/ - 与升级一起运行以提供额外的单元测试数据
    • 一些有用的脚本
  • src/ - 此项目的源代码。
    • main/ - 主要应用程序代码,按语言分解
    • test/ - 单元测试
    • views/ - 视图模板
  • build/ 和/或 target/ - 编译后的内容。未提交。
  • node_modules/ - 由 NPM 管理的外部 Node 库。
  • vendor/ - 由 Composer 管理的外部 PHP 库。
  • config/ - 部署配置。
  • www/ - 作为项目的 '文档根'。包含直接提供的文件以及用于处理不对应现有文件的路径的 .htaccessbootstrap.php
  • Vagrantfile - Vagrant 的配置文件。
  • vm-files/ - 要导入到 Vagrant 虚拟机的文件。
  • provision.sh - 虚拟机配置脚本。

请注意,src/<component>/<language> 目录是 Maven 的约定。它很详细,但足以使包含多种语言和组件(单元测试、构建系统、运行时等)的项目保持组织。

build/target/ 基本上是同一件事。在一个项目中,你可能需要选择一个并坚持使用它。 target 是 Maven 的约定。C 和 JavaScript 开发人员喜欢将其称为 build

数据库

创建数据库

如果你使用 Vagrant,请不要这样做。只需 vagrant up,你应该就可以开始了。以下内容仅适用于你想要在 Vagrant 之外运行的情况。

make create-database 将尝试根据 config/dbc.json 中的配置为你创建数据库。

如果失败(例如,如果你的系统没有按照脚本设计的方式设置),你可以自己创建数据库

以 root 用户身份登录并运行新的 postgres 数据库(sudo -u postgres psql 通常有效):

CREATE DATABASE phptemplateprojectdatabase;
CREATE USER phptemplateprojectdatabaseuser WITH PASSWORD 'phptemplateprojectdatabasepassword';
GRANT ALL PRIVILEGES ON DATABASE phptemplateprojectdatabase TO phptemplateprojectdatabaseuser;

如果你已更改 config/dbc.json 中的数据库或用户名称,请在上述 SQL 中进行相应的更改。

初始化数据库

一旦数据库存在并设置了我们的用户权限,你应该能够运行 make rebuild-database,这将清空数据库并从升级脚本中重建它。

重建数据库

运行 make rebuild-database 以清空数据库并从 src/db-migrations/upgrades/ 中的升级脚本中重建它。

运行 make rebuild-database-with-test-data 以重建数据库并添加来自 src/db-migrations/test-data/ 的数据。

升级数据库

运行 make upgrade-database 以在 src/db-migrations/upgrades/ 中运行新创建的升级脚本。

单元测试

所有测试都在 src/test/ 目录下。

src/test/ 目录的结构应该模仿 src/main/,即一个测试文件测试一个应用文件。

要运行PHPUnit测试,请运行 make run-tests。这将运行单元测试和集成测试。要仅运行单元测试,请运行 make run-unit-tests,要仅运行集成测试,请运行 make run-integration-tests

集成测试是使用数据库的测试。

PHP风格

遵循现有Phrebar代码使用的约定。具体来说,使用 制表符进行首行缩进,函数和控制结构在同一行上使用开括号。

(“使用制表符进行首行缩进”和“智能制表符”可能指的是完全相同的做法。)

部署

将部署到不同环境由 CircleCI 自动处理。阅读这些文档 了解Earthling如何设置CircleCI。

Web服务

如果你使用Vagrant,可以直接通过Vagrant指定的IP地址访问HTTP。例如:

http://192.168.250.250/

如果你接受了默认设置。

如果你在开发机上运行Apache(以及Postgres和其他所需的程序),并且这个目录在DocumentRoot或Alias下的某个位置签出,你可能可以直接浏览到www目录并使一切正常工作。对我来说,是这样的:

http://my-local-machine/~my-username/proj/PHPTemplateProject/www/

大多数人可能需要运行Vagrant。