tungphan/yii-demo

该软件包最新版本(dev-master)没有提供许可证信息。

使用Yii PHP框架构建Web应用程序的绝佳开始方式。

dev-master 2013-06-19 11:44 UTC

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文件夹用于存储所有文件(扩展、组件、行为、模型等...),这些文件在上述应用程序之间共享。

###应用程序目录每个应用程序的目录结构非常相似。例如 backendfrontend 都具有相同的目录结构,但在 frontendwww 文件夹中略有变化,以及为 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 应用程序所需的 非共享 文件夹:runtimeassets 文件夹,提取特定环境的配置设置并将其复制到 *-env.php 文件中,并在非私有环境中运行迁移 - 我们认为迁移应该始终由开发者在他们的机器上手动运行。

从应用程序的根目录中,运行脚本的简单方法是

./runpostdeploy environmentType migrations
  • environmentType(必需):可以是您在 environments 文件夹中配置的任何一个(例如,./runpostdeploy private 使用 *-private.php 配置)
  • migrations(可选):可以是 "migrate" 或 "no-migrate"。
    • migrate:将运行迁移
    • no-migrate:不会运行迁移(在私有环境中不会运行迁移)

###YiiBooster 库 我们将 YiiBooster 小部件库包含到模板中。有关该库及其使用方法的更多信息,请访问 YiiBooster 网站

====

Clevertech
精心构建、美观设计的 Web 应用程序
www.clevertech.biz