发布于 2014-10-21 14:37:15 | 318 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Symfony 中文指南,程序狗速度看过来!

Symfony开源的PHP开发框架

Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。


CLI 核心

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 的功能及实现方法。

CLI 任务

生成结构

$ 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-modelpropel-build-sqlpropel-insert-sql

Schema 管理

$ 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。

数据(Data)管理

$ 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]

将当前项目与另一机器上的项目同步。

测试(Tests)

$ 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   

脚手架(Scaffolding)和生成后台管理(admin)

$ 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)

插件(Plugin)管理

$ 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>

卸载一个插件

自动完成(Automatic completion)

symfony wiki 中有使用者提供的实现symfony 命令自动完成功能的配置文件. 签出适合你的 CLI 的一款:



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务