>백엔드 개발 >PHP 튜토리얼 >Symfony2 빠른 가이드 (2)

Symfony2 빠른 가이드 (2)

WBOY
WBOY원래의
2016-08-08 09:24:12991검색

symfony2의 번들

symfony는 두 번째 버전에서 번들의 개념을 도입했습니다. 현재 제가 이해한 바에 따르면 여기의 번들은 추상화된 웹 서비스로 간주될 수 있습니다. 또한 번들은 다른 사람들이 사용할 수 있는 라이브러리 개념으로도 사용될 수 있습니다. 온라인에서 "symfony2는 타사 번들을 소개합니다"를 검색하면 이를 수행하는 방법에 대한 많은 튜토리얼이 있음을 알 수 있습니다.

오늘 제가 쓰고 싶은 것은 다른 사람들이 사용할 수 있는 번들 작성 방법을 알려주는 것이 아니라 페이지에 액세스하기 위한 번들을 만드는 것입니다.

나만의 번들 만들기

Symfony2는 Symfony2 자체와 일치하는 항목을 자동으로 생성할 수 있는 많은 도구를 제공하므로 웹 사이트 빌더의 수고를 덜어줍니다. 번들을 생성하려면 다음 명령어를 사용하면 됩니다.

<code><span>php</span><span>app/console</span><span>generate:bundle</span><span>-</span><span>-</span><span>namespace=Blogger/BlogBundle</span><span>-</span><span>-</span><span>format=yml</span></code>

아주 간단한 명령어죠?

–네임스페이스 뒤에는 생성하려는 프로젝트 이름과 번들 이름이 옵니다. 생성 후 해당 생성된 코드와 파일은 ./src/Blogger/BlogBundle 아래에 저장됩니다.

–format=yml 이 문장은 컨트롤러를 생성할 때 yml 구성 파일을 사용하여 url–controller 경로를 구성하도록 지정합니다. 이 방법 외에도 Symfony2에서는 경로를 정의하는 Annotation 메서드도 제공하므로 Java Spring을 사용해 본 학생들이라면 Annotation에 익숙할 것이라고 믿습니다. 하지만 저는 개인적으로 구성 파일 방법을 사용하는 것을 선호합니다. 이 방법이 더 중앙 집중화되고 디버깅하기 쉽기 때문입니다. 주석 모드는 경로 정의와 코드를 함께 넣습니다. 프로젝트의 파일 수를 줄이는 것처럼 보이지만 구성 파일을 통해 URL과 컨트롤러 간의 해당 관계를 찾기 위해 프로젝트에서 지속적으로 검색해야 합니다. 한눈에 알 수 있다.

제 프로젝트에서는 엔터티에서만 Annotation 방식을 사용하고 나머지는 모두 구성 파일 방식을 사용합니다.

파일 선반 구조

文件夹 说明
Controller 包含了所有controller的代码,这些controller是为了处理客户端发来的请求的。
Entity 其中每个entity代表了一个数据库中的数据表。
Form 表单类,该类主要是为了么个entity生成html的表单,为了后面的增删改查。
Resource 这里面包含了所有的js/css/网页/文档。
Security 如果对用户需要访问进行细粒度的控制,那么就要在这里条件相应的调整了。由于这一次我并没有太用到这个,所以不会做太多介绍。
Tests 显然,里面都是用来测试的。symfony2的测试使用的是phpunit。如果没有安装还是需要自己手动安装一下的。
Validator 这里面包含的对一些字段的验证信息。这一次,我的表单中包含了json数据的输入,我在这里添加了json schema以对用户输入的json数据进行验证。

创建数据库实体对象

就像创建一个bundle一样,创建数据库实体也有相应的命令。

<code>php app/console doctrine:<span>generate</span>:<span>entity</span></code>

该命令是交互式的,也就是说运行过程中你需要回答它提出的一些问题。它会根据你的回答来创建你所需要的实体。
我这里的情况比较简单,根据提示,把相应的数据表的各个字段输入进去就可以了。

数据库对象的增删改查

<code>php app/console <span>generate</span>:doctrine:crud</code>

别的不多说,就这一条命令搞定。
可以看到symfony2使用的是doctrine来操作数据的。所以在你的symfony2项目开发中,少不了在网上搜索一些关于doctrine的东西,在这里就不多说了。等项目终于到了,再慢慢了解吧。
不过需要再说一句的是,当你在运行这个项目前,请确认你在数据库中已经创建了相应的数据库跟数据表,如果没有,可以使用下面这两个命令。

<code>php app/console doctrine:database:<span><span>create</span>
#根据所创建的实体,来在数据库中创建数据表
php app/console doctrine:<span>schema</span>:<span>update</span> --force</span></code>

项目运行

好了,到现在为止,你一行代码没有写。尝试着运行下自己的项目看看吧。

<code>php app/console <span>server</span>:run</code>

前后端分离 , asset管理

在你的项目开发中,免不了希望前后端分离的。即使没有前后端分离,你可能会引入一些css或者js的库来对你的网页进行美化。

在symfony2中这些都是通过asset这个库来管理的。
如果你是按照我上面这个步骤来创建项目的,那么在app/config/config.yml中你会发现一个叫做“assetic configuration”的字段。

<code>#Assetic Configuration
assetic:
    ......
    assets:
        base_lib_js:
            inputs:
                -<span><span>'@BloggerBlogBundler/Resources/public/js/jquery.js'</span></span>                -<span><span>'@BloggerBlogBundler/Resources/public/lib/bootstrap/js/bootstrap.js'</span></span>                -<span><span>'@BloggerBlogBundler/Resources/public/lib/bootstrap/js/bootstrap-table.js'</span></span>                -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/angular.min.js'</span></span>                -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/angular-locale_zh-cn.js'</span></span>                -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/angular-resource.min.js'</span></span>                -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/ui-bootstrap-tpls.min.js'</span></span></code>

不要忘记把这些库也放到相应的文件夹下。

好了,再次运行你的项目前不要忘了

<code>php app/console asset:<span>dump</span></code>

这条命令会把一些使用到css或者js文件拷贝到你的web目录下,毕竟web目录才是你的项目的入口。

千万不要忘记,每一次更新css或者js时,都要执行一下上面的命令,否则你的更新将不会生效。

–env

上面的每条命令都接受--env这个选项,用来指定是生产环境还是开发环境。如果没有指定的话,默认是开发环境。

拿上面的asset命令来说。

<code><span>php app/console asset:dump --env</span>=<span>prod</span></code>

该命令对开发环境进行asset更新。

项目部署

好了,项目开发完了,你不会再使用symfony2自带的这个web服务器了。需要注意的是你的web文件夹才是nginx需要的root地址。

以上就介绍了symfony2快速指南(二),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 재귀 파싱다음 기사:PHP 재귀 파싱