tungphan / yii-demo
使用Yii PHP框架构建Web应用程序的绝佳开始方式。
Requires
- php: >=5.3.0
- mantel/facebook: 1.1.1
- mantel/giix: 1.0.0
- mantel/portlet: 1.0.0
This package is not auto-updated.
Last update: 2024-09-24 05:58:53 UTC
README
我们使用此文件夹结构设置在 Clevertech 的自有项目中。
概述
YiiBoilerplate,旨在为 Yii 开发者 提供一个应用文件夹结构,该结构具有足够的灵活性,可以满足从简单到企业级应用程序的开发需求。
一开始看起来可能有点复杂,但在Clevertech,我们了解产品的开发周期中需求可能会发生变化,以满足客户的需求,这通常迫使开发者修改初始文件夹结构,从而让新开发者很难进入并“了解”所有内容的位置。
为了避免这类耗时的工作,为了使我们的开发者生活更加轻松,并提高生产力,我们在项目中使用这个文件夹结构模板。
总体结构
以下是我们使用的目录结构
/
backend/
components/
config/
environments/
main-private.php *
main-prod.php
params-private.php *
params-prod.php
main-env.php *
main-local.php *
main.php
params-env.php *
params-local.php *
params.php
test.php
controllers/
SiteController.php
...
extensions/
behaviors/
validators/
lib/
models/
FormModel.php
...
modules/
runtime/ *
views/
layouts/
site/
widgets/
www/
assets/ *
css/
images/
js/
themes/
index.php
.htaccess
common/
components/
config/
environments/
params-private.php *
params-prod.php
params-env.php *
params-local.php *
params.php
data/
extensions/
behaviors/
validators/
lib/
Behat/
Pear/
Yii/
Zend/
messages/
models/
widgets/
console/
commands/
components/
config/
environments/
lib/
migrations/
models/
runtime/ *
yiic.php
frontend/
components/
config/
environments/
main-private.php *
main-prod.php
params-private.php *
params-prod.php
main-env.php *
main-local.php
main.php
params-env.php *
params-local.php *
params.php
test.php
controllers/
extensions/
behaviors/
validators/
lib/
models/
modules/
runtime/ *
views/
layouts/
site/
www/
assets/ *
css/
files/
images/
js/
less/
index.php
robots.txt
.htaccess
tests/
bootstrap/
FeatureContext.php
YiiContext.php
features/
Startup.feature
behat.yml
INSTALL.md
README.md
runbehat
runpostdeploy
yiic
yiic.bat
在团队开发环境中,使用任何可用的VCS(版本控制系统)(例如Git、SVN),带星号的文件和文件夹不应包含在修订系统中。
###顶级目录在最顶层,我们有
- backend:后端应用程序,主要用于管理员管理整个系统(避免在前端应用程序中使用admin模块以避免混淆)
- console:由系统所需的控制台命令组成的控制台应用程序。
- frontend:前端应用程序,是最终用户的主要界面。在网站开发中,这就是网站用户会看到的内容。
- common:包含所有上述应用程序共享内容的目录。
- test:包含所有我们的BDD系统测试的文件夹。
整个应用程序分为三个应用程序:后端、前端和控制台。遵循 yii项目网站的目录结构,对其进行了一些配置上的修改。common文件夹用于存储所有文件(扩展、组件、行为、模型等...),这些文件在上述应用程序之间共享。
###应用程序目录每个应用程序的目录结构非常相似。例如 backend 和 frontend 都具有相同的目录结构,但在 frontend 的 www 文件夹中略有变化,以及为 backend 添加启动主题和扩展,以便轻松创建管理面板。
共享的文件夹结构如下
- components:包含仅由该应用程序使用的组件(例如助手、应用程序组件)
- config:包含特定于应用程序的配置文件。
- controllers:包含控制器类。
- extensions:仅由该应用程序使用的Yii扩展。
- lib:仅由该应用程序使用的第三方库。
- 模型:包含特定于该应用程序的模型类。
- 模块:包含仅由该应用程序使用的模块。
- 视图:存储控制器动作视图脚本。
- 小部件:仅存储该应用程序使用的 Yii 小部件。
- www:该应用程序的 Web 根目录。
我们创建了 扩展 和 小部件 文件夹,这些文件夹显然可以包含在 组件 文件夹中,以便清楚地区分 Yii 应用程序中可能存在的组件类型,并简化查找任务。因此,例如,开发人员不会在包含应用程序级组件、助手或扩展的文件夹中搜索一个渲染 jQuery UI 插件的控件。
控制台 应用程序的目录结构与其他应用程序不同,因为它不需要 控制器、视图、小部件 和 www。它有一个 commands 目录用于存储所有控制台命令类文件。
在开发具有长时间开发周期的大型项目时,我们不断需要调整数据库结构。因此,我们也使用 DB 迁移功能来跟踪数据库更改。我们在 console 下的 migrations 目录中存储所有 DB 迁移。
### 公共目录 公共目录包含在应用程序之间共享的文件。例如,每个应用程序可能都需要使用 ActiveRecord 访问数据库。因此,我们可以在公共目录下存储 AR 模型类。同样,如果某些助手或小部件类在多个应用程序中使用,我们也应该将它们放在公共目录下以避免代码重复。
为了便于代码维护,我们按照与应用程序类似的结构组织公共目录。例如,我们有组件、模型、lib 等。
- 来源: Yii 框架网站
### 应用程序配置 同一系统的应用程序通常共享一些通用配置,例如数据库连接配置、应用程序参数等。为了消除代码重复,我们应该提取这些通用配置并将它们存储在中央位置。在我们的设置中,我们将它们放在 common 目录下的 config 目录中。
#### 如何配置应用程序 该模板的配置并不像最初看起来那么复杂。如前所述,如果我们的系统既有 后端 和 前端 应用程序,并且它们共享相同的数据库配置,我们只需要配置 common 文件夹下的 config 子目录中的一个文件。
每个应用程序和公共目录的 config 文件夹中的文件需要一些解释。在团队环境中工作,不同的开发者可能有不同的开发环境。这些环境也通常与生产环境不同。这就是为什么每个应用程序的配置文件夹中包含一组文件,试图避免不同环境之间的干扰。
如你所见,config 文件夹包括以下文件
- environments/params-private.php:这是为开发者在开发环境中需要的应用程序参数。
- environments/params-prod.php:这是为在 生产 环境中的应用程序需要的应用程序参数。
- environments/main-private.php:这是为开发者在开发环境中需要的应用程序配置设置。
- environments/main-prod.php:这是为在 生产 环境中的应用程序需要的应用程序配置设置。
- main-env.php:此文件将由 runpostDeploy 脚本(我们将在下面解释)选择的特定于环境的应用程序配置覆盖。
- main-local.php:这是开发者的应用程序配置选项。
- params-env.php:这将由 runpostdeploy 脚本选择的特定于环境的参数覆盖。
- params-local.php:开发者的应用程序参数*
- params.php:应用程序参数
- test.php:测试应用程序配置选项
以下配置树的覆盖方式
本地设置 > 环境特定 > 主要配置文件
这意味着本地设置会覆盖环境特定设置,其结果会覆盖主要配置文件。对于所有配置文件夹,通用配置文件夹的设置优先于特定应用程序的设置
通用共享参数 > 应用程序参数 通用共享配置 > 应用程序配置
对于 *-private.php 和 **-local.php 文件存在细微差别。前者会自动由 runpostdeploy 脚本读取,可能是位于同一内部网络中的开发者所用的设置,而后者是程序员的配置。
基本配置应该置于版本控制之下,就像常规源代码一样,以便每个开发者都可以共享。本地配置 不应 置于版本控制之下,而应只存在于每个开发者的工作目录中。
####runpostdeploy 脚本 项目包含一个非常有用的脚本,可以自动创建 Yii 应用程序所需的 非共享 文件夹:runtime 和 assets 文件夹,提取特定环境的配置设置并将其复制到 *-env.php 文件中,并在非私有环境中运行迁移 - 我们认为迁移应该始终由开发者在他们的机器上手动运行。
从应用程序的根目录中,运行脚本的简单方法是
./runpostdeploy environmentType migrations
- environmentType(必需):可以是您在 environments 文件夹中配置的任何一个(例如,
./runpostdeploy private
使用 *-private.php 配置) - migrations(可选):可以是 "migrate" 或 "no-migrate"。
- migrate:将运行迁移
- no-migrate:不会运行迁移(在私有环境中不会运行迁移)
###YiiBooster 库 我们将 YiiBooster 小部件库包含到模板中。有关该库及其使用方法的更多信息,请访问 YiiBooster 网站。
====
精心构建、美观设计的 Web 应用程序
www.clevertech.biz