Symfony 框架实战教程——第一天:创建项目(转)
这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子。。。附上原文地址 https://www.chrisyue.com/symfony-in-action-day-1.html
Symfony 的官方教程其实已经非常的详尽,但却不太亲近新手。新手想要完全理解 Symfony 文档的内容,需要对互联网开发有一定工作经验才行,否则总是有一种看不太明白,看完了也不不知道从哪儿开始的感觉。如果你有这种感觉,希望这篇文章能让你快速上手,本篇的目的,就是为了让 Symfony 新手,甚至是 PHP 新手能快速开始一个具体的项目。
本篇系列重点是为了带领新手使用 Symfony 框架,如果您想了解的是 Symfony 组件,可阅读我翻译 Symfony 项目组老大的系列教程《使用 Symfony 组件创建自己的 PHP 框架》
本篇系列源代码位于 https://coding.net/u/chrisyue/p/symfony2-framework-tutorial/git,不过因为源代码已经包含各种添加修改重构之后的代码,看不到中间过程,建议在所有章节完成之后看,或者作为日后的参考。
2017-01-05 补充:目前 Symfony 已经发展到 3.2 版本。Symfony 严格遵循了标准的版本命名规则『API 如无法向下兼容时,大版本号 +1』,事实上 2 和 3 的区别不是很大,所以其实本教程应该也是适用于 Symfony3 的。如有不兼容处,请留言,我会更新相关的教程。
准备工作
下载并安装 PHP。Symfony 要求运行在 PHP 5.3 版本以上。不过随着 PHP 的版本提升,功能也越来越丰富,运行速度也有提升,所以我建议是最新的稳定版本。在 PHP 5.5 里自带了 web server,这意味着你甚至不需要 Nginx 或者 Apache 等服务就可以快速开始启动你的项目,所以没错,本教程就以 PHP 5.6(咦?难道不是 5.5 吗)为例子来讲解。
注:PHP 7 时代,使用最新版本 PHP,执行时间更短,内存占用更少,效果杠杠的!
首先保证 PHP 在 PATH 目录里。
由于本篇主要阐述如何使用 Symfony 快速开发项目。所以不阐述 PHP 的安装相关知识,这些知识点在网上都很容易查询到。
初始化项目
本篇教程我尽量按照 Windows/*nix 都可以运行的方式来讲解。
得益于 Symfony installer,我们目前可以很方便的初始化一个 Symfony 项目。不过首先,你得有一个 Symfony installer。
随便创建一个目录:比如 www,然后在此目录下先安装 Symfony installer(注意 $ 为命令提示符,只是为了好看,实际操作的时候是不需要输入 $ 的,不再赘述):
|
1
|
$php-r"readfile('http://symfony.com/installer');">symfony.phar
|
然后运行以下命令确认文件可执行
|
1
|
$php symfony.phar
|
如果文件无损坏,应该会显示 symfony installer 的版本号,以及如何使用 symfony installer 的简单介绍:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Symfony Installer(0.5.0)
=========================
Thisisthe official installer tostart newprojects based on the
Symfony full-stack framework.
Tocreateanewproject called blog inthe current directory using
the latest stable version of Symfony,execute the following command:
$symfony.phar newblog
Tobase your project onaspecific Symfony version,append the version
number at the endof the command:
$symfony.phar newblog2.5.6
Updating the Symfony Installer
------------------------------
Newversions of the Symfony Installer are released regularly.Toupdate your
installer version,execute the following command:
$symfony.phar self-update
|
接下来,我们用 symfony.phar 来创建一个项目。这里我们打算做一个新闻聚合类网站,项目就叫 news 好了:
|
1
|
$php symfony.phar newnews
|
如果网络没有问题的话,应该会出现进度条(Windows 下可能没有……),此时 Symfony installer 在当前目录创建了 news 目录,并且初始化好 Symfony 框架的工作目录,以及下载所需要的第三方 PHP 库。
|
1
2
|
Downloading Symfony...
85.81KB/4.89MB▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1%
|
当下载完成后,进入 news 目录,我们可以看到 Symfony installer 为我们初始化的工作目录。这里我们可以把一些对开发来说没有必要的文件删除掉(UPGRADE-***,LICENSE,README.md)。
不出意外,我们便可以通过下面的命令开启一个 Web server 监听在 localhost:8000 上(注:此命令只能运行在 PHP 5.5 版本之上,并且 Windows 可能只能运行 server:run,两者的区别你们自己试试就知道),这样在开发阶段就可以不用安装和配置 Apache 或者 NGINX 也可以访问本地开发环境了,非常方便:
|
1
|
$php app/console server:start localhost:8000
|
*** 注:在 3.0 以上的版本,console 已经位于 bin 目录下面,后面所有 php app/console xxx 命令,在新版本里都是 php bin/console xxx,以下不再赘述!
另外在 *nix 环境下,app/console 或者 bin/console 只要有可执行权限,都是可以不需要显式调用 php 而直接运行的:
Shell
|
1
|
$app/console server:start
|
在浏览器里访问 http://localhost:8000,应该就可以看到 Symfony Framework 安装好之后的欢迎页面了。
需要注意的是,在生产环境还是建议用 NGINX/Apache + php-mod/fastcgi 的方式,区别在于生产环境需要多任务处理。

注意:如果访问不到首页,或者首页不是截图的样子,很有可能你安装的是 Symfony 2.7+ 版本,但并不影响后面的学习
至此,Symfony 项目初始化工作已经完成
我们可以使用 Symfony 框架自带的脚本工具,来确认当前的环境是否已经足够顺利运行 Symfony:
|
1
2
3
|
$php app/check.php
# 在 Symfony 3.0+ 下
$php bin/symfony_requirements
|
比如我这里显示的结果,命令运行结果推荐我安装 intl 扩展

另外我们也可以看到提示说因为命令行加载的 php.ini 可能和 web 服务器加载的不一样(常见的 php-fpm 一般都跟命令行下的 php 加载的不是同一个 php.ini 文件),建议在浏览器里查看路径 /config.php 复查一下。

Symfony 的官方教程其实已经非常的详尽,但却不太亲近新手。新手想要完全理解 Symfony 文档的内容,需要对互联网开发有一定工作经验才行,否则总是有一种看不太明白,看完了也不不知道从哪儿开始的感觉。如果你有这种感觉,希望这篇文章能让你快速上手,本篇的目的,就是为了让 Symfony 新手,甚至是 PHP 新手能快速开始一个具体的项目。
本篇系列重点是为了带领新手使用 Symfony 框架,如果您想了解的是 Symfony 组件,可阅读我翻译 Symfony 项目组老大的系列教程《使用 Symfony 组件创建自己的 PHP 框架》
本篇系列源代码位于 https://coding.net/u/chrisyue/p/symfony2-framework-tutorial/git,不过因为源代码已经包含各种添加修改重构之后的代码,看不到中间过程,建议在所有章节完成之后看,或者作为日后的参考。
2017-01-05 补充:目前 Symfony 已经发展到 3.2 版本。Symfony 严格遵循了标准的版本命名规则『API 如无法向下兼容时,大版本号 +1』,事实上 2 和 3 的区别不是很大,所以其实本教程应该也是适用于 Symfony3 的。如有不兼容处,请留言,我会更新相关的教程。
准备工作
下载并安装 PHP。Symfony 要求运行在 PHP 5.3 版本以上。不过随着 PHP 的版本提升,功能也越来越丰富,运行速度也有提升,所以我建议是最新的稳定版本。在 PHP 5.5 里自带了 web server,这意味着你甚至不需要 Nginx 或者 Apache 等服务就可以快速开始启动你的项目,所以没错,本教程就以 PHP 5.6(咦?难道不是 5.5 吗)为例子来讲解。
注:PHP 7 时代,使用最新版本 PHP,执行时间更短,内存占用更少,效果杠杠的!
首先保证 PHP 在 PATH 目录里。
由于本篇主要阐述如何使用 Symfony 快速开发项目。所以不阐述 PHP 的安装相关知识,这些知识点在网上都很容易查询到。
初始化项目
本篇教程我尽量按照 Windows/*nix 都可以运行的方式来讲解。
得益于 Symfony installer,我们目前可以很方便的初始化一个 Symfony 项目。不过首先,你得有一个 Symfony installer。
随便创建一个目录:比如 www,然后在此目录下先安装 Symfony installer(注意 $ 为命令提示符,只是为了好看,实际操作的时候是不需要输入 $ 的,不再赘述):
|
1
|
$php-r"readfile('http://symfony.com/installer');">symfony.phar
|
然后运行以下命令确认文件可执行
|
1
|
$php symfony.phar
|
如果文件无损坏,应该会显示 symfony installer 的版本号,以及如何使用 symfony installer 的简单介绍:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Symfony Installer(0.5.0)
=========================
Thisisthe official installer tostart newprojects based on the
Symfony full-stack framework.
Tocreateanewproject called blog inthe current directory using
the latest stable version of Symfony,execute the following command:
$symfony.phar newblog
Tobase your project onaspecific Symfony version,append the version
number at the endof the command:
$symfony.phar newblog2.5.6
Updating the Symfony Installer
------------------------------
Newversions of the Symfony Installer are released regularly.Toupdate your
installer version,execute the following command:
$symfony.phar self-update
|
接下来,我们用 symfony.phar 来创建一个项目。这里我们打算做一个新闻聚合类网站,项目就叫 news 好了:
|
1
|
$php symfony.phar newnews
|
如果网络没有问题的话,应该会出现进度条(Windows 下可能没有……),此时 Symfony installer 在当前目录创建了 news 目录,并且初始化好 Symfony 框架的工作目录,以及下载所需要的第三方 PHP 库。
|
1
2
|
Downloading Symfony...
85.81KB/4.89MB▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1%
|
当下载完成后,进入 news 目录,我们可以看到 Symfony installer 为我们初始化的工作目录。这里我们可以把一些对开发来说没有必要的文件删除掉(UPGRADE-***,LICENSE,README.md)。
不出意外,我们便可以通过下面的命令开启一个 Web server 监听在 localhost:8000 上(注:此命令只能运行在 PHP 5.5 版本之上,并且 Windows 可能只能运行 server:run,两者的区别你们自己试试就知道),这样在开发阶段就可以不用安装和配置 Apache 或者 NGINX 也可以访问本地开发环境了,非常方便:
|
1
|
$php app/console server:start localhost:8000
|
*** 注:在 3.0 以上的版本,console 已经位于 bin 目录下面,后面所有 php app/console xxx 命令,在新版本里都是 php bin/console xxx,以下不再赘述!
另外在 *nix 环境下,app/console 或者 bin/console 只要有可执行权限,都是可以不需要显式调用 php 而直接运行的:
Shell
|
1
|
$app/console server:start
|
在浏览器里访问 http://localhost:8000,应该就可以看到 Symfony Framework 安装好之后的欢迎页面了。
需要注意的是,在生产环境还是建议用 NGINX/Apache + php-mod/fastcgi 的方式,区别在于生产环境需要多任务处理。

注意:如果访问不到首页,或者首页不是截图的样子,很有可能你安装的是 Symfony 2.7+ 版本,但并不影响后面的学习
至此,Symfony 项目初始化工作已经完成
我们可以使用 Symfony 框架自带的脚本工具,来确认当前的环境是否已经足够顺利运行 Symfony:
|
1
2
3
|
$php app/check.php
# 在 Symfony 3.0+ 下
$php bin/symfony_requirements
|
比如我这里显示的结果,命令运行结果推荐我安装 intl 扩展

另外我们也可以看到提示说因为命令行加载的 php.ini 可能和 web 服务器加载的不一样(常见的 php-fpm 一般都跟命令行下的 php 加载的不是同一个 php.ini 文件),建议在浏览器里查看路径 /config.php 复查一下。

Symfony 框架实战教程——第一天:创建项目(转)的更多相关文章
- Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车
让我们来实现一个简单的 “电商购物车” 需求来了解一下如何使用 Newbe.Claptrap 进行开发. 业务需求 实现一个简单的 “电商购物车” 需求,这里实现几个简单的业务: 获取当前购物车中的商 ...
- 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- [ABP教程]第一章 创建服务端
Web应用程序开发教程 - 第一章: 创建服务端 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开发 ...
- php CI 实战教程第一季百度经验杂志
phpCI实战教程第一季_百度经验杂志_百度经验http://jingyan.baidu.com/magazine/16428 杂志为本人php CI实战教程系列经验 从实际项目使用中写系列实战经验, ...
- 虚幻4 - ARPG实战教程(第一季)
在广受欢迎的的<虚幻4高速开发入门>视频教程之后.我收到了许多的反馈,当中大量的同学想要一个实战类的教程.于是,我花了一段时间准备之后,推出了新的一系列实战教程. 希望以深入浅出的方式.解 ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- 【从零开始搭建自己的.NET Core Api框架】(一)创建项目并集成swagger:1.1 创建
系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...
- C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)
一项目创建: 创建项目是开发的第一步. 运行untiy之后如果是第一次运行会弹出 我们这里随便创建一个项目. 二Untiy面板介绍: 三代码编辑器的切换: 这里我安装了vs2012. 到这里开发环境基 ...
- SSM实战——秒杀系统之创建项目、管理依赖、设计数据库
注:本项目使用Myeclipse开发. 一:项目创建 1:使用Myeclipse创建一个web project,命名为MySeckill,并转换为Maven项目. 2:创建项目文件目录如下: 上面四个 ...
随机推荐
- MAC电脑安装svn客户端cornerstone
个人感觉在mac上最好用的svn客户端就是cornerstone,公司客户端也统一使用这个 sudo spctl --master-disable 这条命令作用就是使得mac运行安装任何来源App,不 ...
- 《深入理解mybatis原理》 Mybatis数据源与连接池
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池. 本文首先会讲述MyB ...
- 【转】15个必须知道的chrome开发者技巧
一.快速切换文件 如果你使用过sublime text,那么你可能不习惯没有Go to anything这个功能的覆盖.你会很高兴听到chrome开发者功能也有这个功能,当DevTools被打开的时候 ...
- Alpha 冲刺报告(1/10)
Alpha 冲刺报告 队名:洛基小队 峻雄(组长) 已完成:α版要完成的第一部分的游戏内容规划 明日计划:学习脚本教程,熟悉一下相关API 剩余任务:物品背包交互脚本 困难:对于JS脚本的不熟悉:如何 ...
- Centos 7 iptables配置
systemctl status firewalld.service #检测是否开启了firewall systemctl stop firewalld.service #关闭firewall syt ...
- VS2013打开项目 提示Asp.net4.5未在web服务器上注册 F5运行 启动不来 权限
打一个补丁 http://blogs.msdn.com/b/webdev/archive/2014/11/11/dialog-box-may-be-displayed-to-users-when-op ...
- 深入剖析php执行原理(2):函数的编译
本文只探讨纯粹的函数,并不包含方法.对于方法,会放到类.对象中一起研究. 想讲清楚在zend vm中,函数如何被正确的编译成op指令.如何发生参数传递.如何模拟调用栈.如何切换作用域等等,的确是一个很 ...
- 理解活在IPHONE中的那些APP (五)
为了让App活起来 上一篇简单的说了一下关于IOS的一些事情,现在有必要深入了解一些对于让App活起来比较关键的信息.比如IOS系统的架构,这个我就不赘述了,请移步http://blog.csdn.n ...
- select下拉的绑定及回显(ajxa)
下拉列表一般通过ajax请求数据绑定 // 绑定新闻类型下拉 function news_type() { var news_type=$("#news_type").val(); ...
- 3109. [CQOI2013]新数独【DFS】
Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v). Output 输出包含9行,每行 ...