使用symfony命令创建项目的方法,symfony命令创建项目
使用symfony命令创建项目的方法,symfony命令创建项目
本文实例讲述了使用symfony命令创建项目的方法。分享给大家供大家参考,具体如下:
概况
这一章节描述一个Symfony项目的合理结构框架,并且用 symfony 命令初始项目结构。
介绍
在symfony里,一个项目是一个指定域名下的一组服务和有效操作,共享相同的项目模型。
在一个项目里面,应用中的操作是一组逻辑;每个应用都可以正常的独立运行,与相同项目中的其他应用互不干涉。
在多数情况中,一个项目会包含两个应用,一个负责前台显示,一个负责后台处理,使用相同的数据库。当然你也可以在一个项目中包含很多小站点,每个站点都是一个不同的应用。注意在不同应用之间使用的超链接必须使用绝对路径。
每一个应用都是一组模块,每一个模块都负责一个特殊的功能。一个模块通常为了类似的功能而使用一个页面或一组页面。例如模块可以是home, articles, help, shoppingCart, account,等等。
模块的功能:每个模块都有它们各自的功能,例如 shoppingCart(购物车) 模块要有 添加(add), 展示(show) 和 更新(update) 功能。功能的行为可以看作一个典型web应用中的页行为。
如果一个新的项目的级别太多,那么可以很简单的把模块中的所有功能分组,这样做文件结构可以保持简单。当应用更加复杂的时候,可以在逻辑模块中组织功能。
每个应用都可以运行在不同的环境中,例如,不同的配置或数据库。一般来说每个新的应用都会运行在三个环境(开发,测试和最终产品)中。如果需要的话每个应用都可以运行在更多的环境中,在不同的环境中仅仅需要修改配置配件。
例如,一个测试环境中需要记录警告和错误,而一个最终产品环境将只需要记录错误。在开发环境中通常不开启缓存加速,而在测试和最终产品环境中需要开启。开 发环境和测试环境可能会需要测试用的数据,储存在最终产品的远程数据库中。所有的环境都可以在一台机器上共存,而通常产品服务器上只有最终产品环境。
注意:如果你是通过沙盒(sandbox)使用symfony,你不需要设置项目或应用,沙盒(sandbox)内部已经准备了一个名为'sf_sandbox'的项目和一个名为'frontend'的应用。你也不需要设置web服务器,只需要把你的程序放置在 web/ 根目录下。
Pake
SymFony使用专门的工具Pake去管理项目、应用和模块。Pake是一个php工具,类似于Rake命令(这是一个将 make 命令转换为Ruby的工具)。它会根据一个名为 pakefile.php 的特殊配置文件自动化一些管理任务。如果你使用 pake 工具代替了 symfony 命令行,所有的操作都会变得非常简单。
要得到所有有效的管理操作命令列表,只需要简单得在你的项目目录中输入:
$ symfony -T
CLI(命令行操作)的任务调度用于一个项目的前期阶段期间。一个关于CLI任务调度的完整说明参考CLI章节 。
项目设置
一切开始之前,你必须新建一个存放项目的目录:
$ mkdir /home/steve/myproject
然后,开始初始化项目生成原始文件和目录,简单的输入:
$ cd /home/steve/myproject $ symfony init-project myproject
这是一个新创建的文件系统树结构的概况:
apps/
batch/
cache/
config/
data/
doc/
lib/
log/
test/
web/
symfony 命令可以在当前项目的可用目录中随时调用。
应用设置
项目到现在还没有完成,它至少还需要一个应用。先使用 symfony init-app 命令初始化一个应用,用命令后跟的参数去命名这个应用的名称:
$ symfony init-app myapp
这样就在项目的根目录下的 apps/ 文件夹中创建了一个 myapp 目录,其中包含了用于你站点的一个默认应用配置和一组目录文件:
apps/
myapp/
config/
i18n/
lib/
modules/
templates/
一些充当各自默认环境中的前端控制器的php文件也被创建在项目根目录的web目录下:
web/
index.php
myapp_dev.php
index.php是production新应用程序的前端控制器。因为你创建这个项目中的第一个应用程序时,Symfony创建了一个调用 index.php的文件,例如 myapp.php (如果你现在添加一个名为 mynewapp 的新应用程序,新产品的前端控制器将被命名为mynewapp.php)。在 开发环境中运行程序时,调用前端控制器 myapp_dev.php。
注意:你如果仔细阅读了介绍,你可能会对myapp_test.php文件的位置感到意外。事实上,测试 环境是用于对你的应用程序的构件进行单元测试,它不需要前端控制器。可以参考单元测试章节去了解更多详细内容。
从现在开始,/home/steve/myproject/ 目录将会作为项目的根目录。根目录的路径已经被保存为 SF_ROOT_DIR 常量,定义在 index.php 文件中,并且我们将会用这个常量名代替实际路径以避免把不叫Steve的读者搞糊涂了(译者注:因为作者将项目放在/home/steve /myprojetc的目录下,这个路径每个人可能都不尽相同,所以使用常量SF_ROOT_DIR来代替了实际路径)。
Web服务器设置
为了访问和测试新的应用程序,需要配置web服务器。这有一个Apache的例子,在 httpd.conf 配置文件中加入一个新的虚拟主机:
<Directory "/$data_dir/symfony/web/sf"> AllowOverride All Allow from All </Directory> <VirtualHost *:80> ServerName myapp.example.com DocumentRoot "/home/steve/myproject/web" DirectoryIndex index.php Alias /sf /$data_dir/symfony/web/sf <Directory "/home/steve/myproject/web"> AllowOverride All Allow from All </Directory> </VirtualHost>
注意:上面的配置中的 $data_dir 变量需要替换成你的PEAR库目录。例如:在*nix系统中,你可以输入:
<code> Alias /sf /usr/local/lib/php/data/symfony/web/sf</code>
你可以在安装章节找到更多关于PEAR目录的信息。
重启Apache服务之后,就可以看到调用新创建的应用程序的页面,只需要在一个标准的web浏览器的地址栏输入下列路径:
http://myapp.example.com/index.php/
或者,在调试模式下使用这个路径:
http://myapp.example.com/myapp_dev.php/
注意:Symfony显示‘简短漂亮的(smart)'路径时用到了 mod_rewrite 模块。如果你的Apache版本没有将 mod_rewrite 模块编译进去,那么需要在 httpd.conf 中检查模块mod_rewrite是否是动态模块方式(DSO)安装的,并且确认是否已经打开(译者注:关于Apache的mod_rewrite模块安 装和使用方法请参考Apache相关文档,这里假设读者已经具备这方面知识而不作过多说明):
AddModule mod_rewrite.c LoadModule rewrite_module modules/mod_rewrite.so
你可以在路由(routing)章节了解更多关于简短路径(smart urls)的信息。
Symfony 兼容其它服务器配置方式。你也可以,例如,用别名(alias)代替虚拟主机访问symfony应用程序。若需要了解更多关于web服务器配置信息,请查阅相关章节。
模块设置
你这个新的应用程序并不出众,它缺乏吸引人的功能。如果你想增加功能性,你需要在在其中用到模块。这里再一次用到了 symfony 命令,参数为 init-module ,后面跟着应用程序名称和新模块的名称:
$ symfony init-module myapp mymodule
创建以后的树结构如下:
modules/
mymodule/
actions/
config/
lib/
templates/
validate/
新模块直接可以被使用:
http://myapp.example.com/index.php/mymodule
然后你需要让它正常的工作,编辑文件 myapp/modules/mymodule/templates/indexSuccess.php 输入:
Hello, world !
保存它,刷新刚才的页面就可以看到内容!
源文件版本控制(Source versioning)
应用程序设置完成之后,建议开始进行源文件版本控制。Symfony从一开始就支持CVS(译者注:版本控制系统),建议使用Subversion(译者注:一个版本控制系统软件,采用CVS 的运作模型, 并以取代CVS 为目标)。下面的例子列出了一些Subversion的命令,用于从在一个安装了Subversion的服务器上创建一个新项目的"仓库"(译者注:repository,源代码储存的地方)。对于Windows用户,建议客户端使用TortoiseSVN。关于源文件版本控制的更多信息和命令用法,请参考Subversion文档。
下面的例子假设$SVNREP_DIR是一个已经定义的环境变量。如果你还没有定义它,你需要用"仓库"的实际路径代替$SVNREP_DIR变量。
现在让我们开始创建myproject项目的新"仓库":
$ svnadmin create $SVNREP_DIR/myproject
然后用下面这串命令创建新"仓库"的基本组织结构(规划),其中包含 trunk, tags 和 branches 三个目录:
[code]$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/myproject/trunk file:///$SVNREP_DIR/myproject/tags file:///$SVNREP_DIR/myproject/branches[/code]
这将是你第一个版本。现在你必须导入项目的文件,但不包括缓存和日志等临时文件:
$ cd /home/steve/myproject $ rm -rf cache/* $ rm -rf log/* $ svn import -m "initial import" . file:///$SVNREP_DIR/myproject/trunk
检查提交的文件:
$ svn ls file:///$SVNREP_DIR/myproject/trunk/
看上去很不错。现在SVN"仓库"已经记录了所有项目文件的版本(和更改历史)。就是说实际路径为 /home/steve/myproject 的目录中所有的文件都已经被"仓库"记录。要做到这一点,首先重命名 myproject 目录名,当一切运行正常的时候可以删除它,并且在新目录中向"仓库"提交一个checkout:
$ cd /home/steve $ mv myproject myproject.origin $ svn co file:///$SVNREP_DIR/myproject/trunk myproject $ ls myproject
现在你可以在 /home/steve/myproject/ 目录下的文件中工作,并且提交修改到"仓库"中。不要忘记作一些清理和删除myproject.origin目录,它现在没有用了。
还有一些另外的设置。当你向"仓库"中提交工作目录时,会复制一些多余的文件,像项目中 cache 和 log 目录下的文件。因此你需要针对这个项目在svn中指定一个忽略列表。你也需要重新将 cache/ 和 log/ 目录的权限设置为完全控制,在访问时产生的文件SVN将不会储存:
$ cd /home/steve/myproject $ svn propedit svn:ignore . $ chmod 777 cache $ chmod 777 log
这将调用在SVN中设置的默认的文本编辑器。如果没有生效,就像下面这样设置subversion首选的编辑器:
$ export SVN_EDITOR=<name of editor> $ svn propedit svn:ignore .
直接在SVN中的忽略列表中加入myproject子目录,这样提交的时候就忽略了:
cache log
保存然后退出,这样就完成了。
希望本文所述对大家基于Symfony框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
- Symfony2框架创建项目与模板设置实例详解
- Symfony页面的基本创建实例详解
- symfony2.4的twig中date用法分析
- Symfony2之session与cookie用法小结
- Symfony2实现从数据库获取数据的方法小结
- Symfony2实现在controller中获取url的方法
- Symfony2框架学习笔记之表单用法详解
- Symfony2框架学习笔记之HTTP Cache用法详解
- Symfony2学习笔记之插件格式分析
- Symfony2学习笔记之系统路由详解
- Symfony2学习笔记之控制器用法详解
- Symfony2学习笔记之模板用法详解
- Symfony2创建页面实例详解

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

通过sudo命令,用户可以在提升权限模式下运行命令,而无需切换到超级用户模式。本文将介绍如何在Windows系统中模拟类似于sudo命令的功能。什么是数道司令部?Sudo(“超级用户do”的缩写)是一种命令行工具,允许基于Unix的操作系统(如Linux和MacOS)的用户以提升的权限执行命令,这些权限通常是管理员所拥有的。在Windows11/10中运行SUDO命令然而,随着最新发布的Windows11Insider预览版推出,Windows用户现在也可以体验到这一项功能。这一新功能使用户能够

本文将向读者介绍在Win11系统中如何使用命令提示符(CommandPrompt)来查找网络适配器的物理地址(MAC地址)。MAC地址是网络接口卡(NIC)的唯一标识符,它在网络通信中扮演着重要角色。通过命令提示符,用户可以轻松地获取到当前计算机上所有网络适配器的MAC地址信息,这对于网络故障排查、配置网络设置等任务非常有帮助。方法一:使用「命令提示符」1、按【Win+X】组合键,或【右键】点击任务栏上的【Windows徽标】,在打开的菜单项中,选择【运行】;2、运行窗口,输入【cmd】命令,然

cmd窗口中提示telnet不是内部或外部命令这个问题想必曾经也深深的困扰着你吧,这个问题的出现并不是因为用户们的操作哪里有什么不对用户们也不用太担心只需要一些小小的操作设置就可以让cmd窗口提示telnet不是内部或外部命令这个问题迎刃而解,一起来看看小编今天为大家带来的cmd窗口提示telnet不是内部或外部命令解决办法吧。cmd窗口提示telnet不是内部或外部命令解决办法:1、打开电脑的控制面板。2、找到程序和功能。3、找到左侧的启动或关闭Windows功能。4、找到“telnet客户端

Win11系统中,可以通过命令来启用或禁用Hyper-V增强会话模式。本文将介绍如何使用命令来进行操作,帮助用户更好地管理和控制系统中的Hyper-V功能。Hyper-V是Microsoft提供的一种虚拟化技术,它内置在WindowsServer和Windows10、11(家庭版除外)中,允许用户在Windows系统中运行虚拟操作系统。虽然虚拟机与宿主机操作系统相隔离,但通过设置,它们依然能够使用宿主机的资源,如声卡和存储设备等。其中一个关键设置就是启用「增强会话模式」。增强会话模式是Hyper

一、概述sar命令通过从系统活动中收集的数据来展示系统的使用情况报告。这些报告由不同部分组成,每个部分都包含数据类型和收集数据的时间。sar命令的默认模式显示访问CPU的各种资源(如用户、系统、I/O调度等)在不同时间增量下的CPU使用率。此外,它还显示给定时间段内空闲CPU的百分比。报告底部列出了每个数据点的平均值。sar默认每10分钟报告一次收集的数据,但您可以使用各种选项来筛选和调整这些报告。与uptime命令类似,sar命令也可帮助您监测CPU的负载情况。通过sar,您可以了解过度负载发

Linux重启服务的正确方式是什么?在使用Linux系统时,经常会遇到需要重启某个服务的情况,但是有时候我们可能会在重启服务时遇到一些问题,比如服务没有真正停止或启动等情况。因此,掌握正确的重启服务的方式是非常重要的。在Linux中,通常可以使用systemctl命令来管理系统服务。systemctl命令是systemd系统管理器的一部分

LSOF(ListOpenFiles)是一个命令行工具,主要用于监控类似Linux/Unix操作系统的系统资源。通过LSOF命令,用户可以获取有关系统中活动文件以及正在访问这些文件的进程的详细信息。LSOF能够帮助用户识别当前占用文件资源的进程,从而更好地管理系统资源和排除可能的问题。LSOF的功能强大且灵活,可以帮助系统管理员快速定位文件相关的问题,如文件泄漏、未关闭的文件描述符等。通过LSOF命令LSOF命令行工具允许系统管理员和开发人员:确定当前正在使用特定文件或端口的进程,在端口冲突的情

Linux是一个强大的操作系统,它提供了许多高效的进程间通信机制,如管道、信号、消息队列、共享内存等。但是,有没有一种更简单、更灵活、更高效的通信方式呢?答案是有的,那就是eventfd。eventfd是Linux2.6版本引入的一种系统调用,它可以用来实现事件通知,也就是通过一个文件描述符来传递事件。eventfd包含一个由内核维护的64位无符号整型计数器,进程可以通过对这个文件描述符进行read/write来读取/改变计数器的值,从而实现进程间通信。eventfd有什么优点呢?它有以下几个特
