发布于 2014-10-21 14:37:15 | 318 次阅读 | 评论: 0 | 来源: 网友投递
这里有新鲜出炉的Symfony 中文指南,程序狗速度看过来!
Symfony开源的PHP开发框架
Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。
The symfony
脚本是位于项目根目录的一个PHP脚本。 symfony 命令用于执行相应的任务(task),而且一些任务还需要额外的参数(parameters)。 可以用如下的语法调用之:
$ cd myproject
$ php symfony <TASK> [parameters]
Note: symfony CLI 只能从项目根目录运行。
symfony 砂箱(sandbox) 包含了再 Windows and *nix 平台上更快速的可执行方式:
$ ./symfony <TASK> [parameters] # *nix
$ symfony <TASK> [parameters] # Windows
本章范例均使用 php
可执行方式,但是如果你的项目已有恰当的可执行文件可以省略之。
罗列(list)所有可执行任务,调用方法为:
$ php symfony
显示 symfony 包的安装版本,键入:
$ php symfony -V
少量任务有简写(shortcut)方式,使用更快捷,效果相同:
$ php symfony cc
// 与下面的命令做相同的事情
$ php symfony clear-cache
出现异常时,你也许想要获得堆栈的跟踪信息和详细说明。在任务名前添加 -t
选项即可获得跟踪信息。
Note: 就记录而言,symfony 使用了一种专业的工具:名为 Pake,来管理普通任务。 Pake 是一个类似于 Rake命令的 php 工具,相当于 Ruby 版本的
make
命令。 Pake 由 symfony team 团队制作。 它根据pakefile.php
这个具体的配置文件自动执行一些管理任务。但是由于你只是通过在命令行中键入symfony
来使用pake
, 你完全没必要了解 pake 的功能及实现方法。
$ php symfony init-project <PROJECT_NAME>
初始化一个 symfony 项目(简写:new
):
$ php symfony init-app <APPLICATION_NAME>
初始化一个新的 symfony 应用(简写:app
):
$ php symfony init-module <APPLICATION_NAME> <MODULE_NAME>
初始化一个新的 symfony 模块(简写:module
):
$ php symfony init-batch <SKELETON_NAME> [...]
初始化一个新的批处理文件(简写:batch
),你必须先选择一个批处理模板用于初始化,然后执行:
$ php symfony init-controller <APPLICATION_NAME> <ENVIRONMENT_NAME> [<SCRIPT_NAME>] [true|false]
初始化一个新的控制器(简写:controller
)默认脚本名称遵循 symfony 约定:
$ php symfony propel-build-model
基于 config/
目录下的 schema 文件(YAML 或 XML),为当前模型声称 Propel 类(classes).
如下命令的连接设置基于 config/propel.ini
中的设置
$ php symfony propel-build-sql
在 data/schema.sql
文件中生成 schema.yml
中描述的 SQL 代码。
$ php symfony propel-build-db
基于连接设置生成空数据库。
$ php symfony propel-insert-sql
在数据库中执行 data/schema.sql
中的 SQL 语句
$ php symfony propel-build-all
在一个命令中执行 propel-build-model
, propel-build-sql
和 propel-insert-sql
。
$ php symfony propel-build-schema [xml]
从已有数据库建立 schema.yml
。 如果添加 xml
参数, 则建立一个 schema.xml
而不是 YAML 版本。
$ php symfony propel-convert-xml-schema
建立 YAML 版本的 XML schemas 。
$ php symfony propel-convert-yml-schema
建立 XML 版本的 YAML schemas。
$ php symfony propel-load-data <APPLICATION_NAME> [<ENVIRONMENT_NAME>] [<FIXTURES_DIR_OR_FILE>]
除非另行设置,从默认的 data/fixtures/
目录加载数据。 默认环境是开发环境 dev
。fixtures 目录必须与项目的 data 目录相关, 例如:fixtures
(默认)后者 testdata
或者指定单一文件 fixtures/file.yml
。
$ php symfony propel-build-all-load <APPLICATION_NAME> [<ENVIRONMENT_NAME>] [<FIXTURES_DIR_OR_FILE>]
执行 propel-build-all
后执行 propel-load-data
。 与 propel-load-data
配合参数使用。
$ php symfony propel-dump-data <APPLICATION_NAME> <FIXTURES_DIR_OR_FILE> [<ENVIRONMENT_NAME>]
提取数据库库中的数据到一个 fixtures 目录的 YAML 格式的文件.
$ php symfony clear-cache [<APPLICATION_NAME>] [template|config]
清除缓存(cached)信息(简写:cc
)。
$ php symfony clear-controllers
清除 web 目录中除设置为产品环境的所有控制器。 在向产品服务器部署时非常实用。
$ php symfony fix-perms
修正目录权限, 将需要设为可写的目录改为 777
。 权限设置在由 SVN 签出时会被改变。
$ php symfony freeze
$ php symfony unfreeze
将所有必要的 symfony 库文件拷贝到项目的 data/
, lib/
和 web/sf/
目录。 项目将成为类砂箱。 例如。 准备好一个无依赖性的独立的应用,可以通过 FTP 上传至产品服务器。 对于 PEAR 安装和链接安装都适用。 unfreeze
是相反的解冻任务。
$ php symfony sync <ENVIRONMENT_NAME> [go]
将当前项目与另一机器上的项目同步。
$ php symfony test-unit <UNIT_TEST>
启动位于 test/unit/
目录的一个测试。 参数可以是一个单一的单元测试文件(忽略 Test.php
后缀), 一组单元测试文件,或者一个带有统配符的文件路径名。如果没有给定测试名称,所有单元测试都将运行。
$ php symfony test-unit
以并行(harness)模式启动所有测试。
$ php symfony test-functional <APPLICATION_NAME> <TEST>
为给定应用启动一个功能测试。 TEST
参数可以使一个单一的功能测试文件(忽略 Test.php
后缀),一组单元测试文件,或者一个带有统配符的文件路径名。
$ php symfony test-functional <APPLICATION_NAME>
以并行(harness)模式启动一个应用的所有功能测试。
$ php symfony test-all
以并行(harness)模式启动所有单元测试和功能测试。
$ php symfony disable <APPLICATION_NAME> <ENVIRONMENT_NAME>
将用户定向到 settings.yml
中设置的不可获得(unavailable)模块(module)和行为(action)就像是在 settings.yml
文件中进行了不可获得设置。其优势在于,可以在不屏蔽整个项目的情况下为单一环境屏蔽单一应用。
$ php symfony enable <APPLICATION_NAME> <ENVIRONMENT_NAME>
起用应用并清除缓存。
$ php symfony purge-logs
为环境和应用清除日志(log)目录中的日志文件。 logging.yml
文件中设置了 purge: on
(默认设置)。
$ php symfony rotate-log <APPLICATION_NAME> <ENVIRONMENT_NAME>
Forces a rotation of a log file if rotate
is enabled for the log file in logging.yml
. The rotation parameters are the period
(the number of days a single log file lasts) and the history
(the number of backup log files kept). Here is an example of logging.yml
withrotation configutation:
prod:
rotate: on
period: 7 ## Log files are rotated every 7 days by default
history: 10 ## A maximum history of 10 log files is kepts
$ php symfony propel-generate-crud <APPLICATION_NAME> <MODULE_NAME> <CLASS_NAME>
$ php symfony propel-init-crud <APPLICATION_NAME> <MODULE_NAME> <CLASS_NAME>
基于模型(model)中的类生成一个新的 Propel CRUD 模块。 generate
版本将从frameversion copies the code from the framework to a new module, the init
verson creates an empty module that inherits from the one in the framework. In this case, the generated code is visible only in the cache/
folder (the generated actions and templates inherit from the framework).
$ php symfony propel-init-admin <APPLICATION_NAME> <MODULE_NAME> <CLASS_NAME>
基于一个 model 中的类,初始化一个新的 Propel 管理模块(module)
$ php symfony plugin-install <CHANNEL_NAME>/<PLUGIN_NAME>
安装一个新插件。使用 http://plugins.symfony-project.com
作为 channel 名,从 symfony wiki 安装一个新插件。
$ php symfony plugin-upgrade <CHANNEL_NAME>/<PLUGIN_NAME>
升级一个插件
$ php symfony plugin-upgrade-all
升级所有以前安装过的插件
$ php symfony plugin-uninstall <CHANNEL_NAME>/<PLUGIN_NAME>
卸载一个插件
symfony wiki 中有使用者提供的实现symfony 命令自动完成功能的配置文件. 签出适合你的 CLI 的一款: