首頁 >後端開發 >php教程 >symfony2快速指南(二)

symfony2快速指南(二)

WBOY
WBOY原創
2016-08-08 09:24:12991瀏覽

symfony2中的Bundle

symfony在它的第二版中引入了Bundle的概念,根據我現在粗淺的理解,這裡的bundle可以看做是你所創建的web service的一個抽象。另外bundle也可以作為一個函式庫的概念,供其他人使用。你再上網搜尋“symfony2 引進第三方bundle”,就可以看到大家有很多教學再將這個事情。

好了,我今天要寫的,並不是讓你如何寫一個bundle供別人使用;而是創建一個用來有訪問頁面的bundle。

創建自己的bundle

symfony2是一個快速開發工具,它提供了很多工具,可以自動生成一些符合symfony2自己的東西,這樣免去了建站者的麻煩。建立一個bundle,可以使用以下指令:

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

很簡單的一個指令,不是嗎?

–namespace後面接的是你要建立的專案名,還有bundle名。創建好之後,生成的相應程式碼和檔案將被保存在./src/Blogger/BlogBu​​ndle下面。

–format=yml 這句話將會制定,在創建controller時,使用yml的設定檔的方式,對url–controller路由進行設定。 symfony2除了這種方式,還提供了annotation的方式來對路由進行定義,相信使用過java spring的同學一定不會對annotation陌生。但是我個人還是比較喜歡使用設定檔的方式,因為這種方式比較集中,比較方便debug。 annotation的模式把路由定義跟程式碼放到了一起,雖然看起來減少了專案中的檔案數目,但是你需要不停的在專案中搜尋才能定位到你的url跟你的controller的對應關係,而透過配置文件,這些事情變得一目了然。

在我的專案中,我只有在entity中使用了annotation的這種方式,其他的一概使用設定檔的方法。

文件架結構

Controller的請求Entity其中每個entity代表了一個資料庫中的資料表。 Form表單類,此類別主要是為了麼個entity產生html的表單,為了後面的增刪改查。 Resource這裡麵包含了所有的js/css/網頁/文件。 Security如果對用戶需要存取進行細粒度的控制,那麼就要在這裡條件相應的調整了。由於這次我並沒有太用到這個,所以不會做太多介紹。 Tests顯然,裡面都是用來測試的。 symfony2的測試使用的是phpunit。如果沒有安裝還是需要自己手動安裝一下的。 Validator
資料夾 說明
Controller 包含了controller
🎜這裡麵包含的一些欄位的驗證資訊。這次,我的表單中包含了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 遞迴解析