首頁 php教程 PHP开发 高性能PHP框架Symfony2經典入門教程

高性能PHP框架Symfony2經典入門教程

Dec 26, 2016 am 11:27 AM

Symfony2是一個基於PHP語言的Web開發框架,有著開發速度快、效能高等特點。本文以一個程式範例的實作過程詳細敘述了Symfony2框架的配置與程式開發。

本人以Ubuntu系統為例,採用.tgz的壓縮包,解壓縮源文件到/var/www目錄中並執行:

tar zxvf Symfony_Standard_Vendors_2.0.###.tgz -C /var/www
登入後複製

上面的###是指版本號,我下的時候是BETA5 。

當解壓縮之後,Symfony2的目錄如下:

/var/www/ <- Web根目录
 Symfony/ <- Symfony2解压目录
  app/ <- 存放symfony的核心文件的目录
   cache/ <- 存放缓存文件的目录
   config/ <- 存放应用程序全局配置的目录
   logs/ <- 存放日志的目录
  src/ <- 应用程序源代码
   ...
  vendor/ <- 供应商或第三方的模组和插件
   ...
  web/ <- Web入口
   app.php <- 生产环境下的前端控制器
   ...
登入後複製

   

如果你需要安裝(如果你下載的是without vendor版本)或更新vendor()內容時,可以使用:第三方可以使用:第三方

二、設定

Symfony2的設定很簡單,只需要在瀏覽器中輸入:

cd /var/www/Symfony
php bin/vendors install
登入後複製

   

然後按照提示來進行就可以了。其中值得注意的就是app/cache和app/logs目錄的權限問題,由於我是在Ubuntu下安裝的,所以可以使用(其中firehare是我的用戶名,大家在這裡可以用你的用戶名代替):

http://localhost/Symfony/web/config.php
登入後複製

   

如果系統不支援setfacl命令的話,要檢查2個地方:

  setfacl是否已經安裝,如果沒有的話,可以透過以下命令安裝(  setfacl是否已經安裝,如果沒有的話,可以透過以下命令安裝(在Ubuntu 11.10中已經缺象呼叫,再將這些資訊拷貝到/var/www/Symfony/app/config/parameters.ini文件中,如下所示:

#为了保险起见
rm -rf app/cache/*
rm -rf app/logs/*
#设置ACL
sudo setfacl -R -m u:www-data:rwx -m u:firehare:rwx app/cache app/logs
sudo setfacl -dR -m u:www-data:rwx -m u:firehare:rwx app/cache app/logs
登入後複製

   

  

如果全部OK的話,在你瀏覽器中輸入下列地址時,你將得到一個Demo頁:

sudo apt-get install setfacl
登入後複製

   

三、程序範例:

1.創建Bundle:

 

  路由可以創建在app/config/routing.yml中,但為了有個好的程式設計習慣和程式碼組織,可以把它放在所建Bundle目錄中的Resources/config/routing.yml中,而在app/config/routing. yml中只保留到該路由檔案的引用,如下所示:

# /var was on /dev/sda7 during installation
UUID=c2cc4104-b421-479a-b21a-1108f8895110 /var ext4 defaults,acl 0 2
登入後複製

   


而真正的路由則寫在src/Acme/HelloBundle/Resources/config/routing.yml路由檔案中,如下所示:

; These parameters can be imported into other config files
; by enclosing the key with % (like %database_user%)
; Comments start with &#39;;&#39;, as in php.ini
[parameters]
 database_driver="pdo_mysql"
 database_host="localhost"
 database_name="symfony"
 database_user="symfony"
 database_password="symfony"
 mailer_transport="smtp"
 mailer_host="localhost"
 mailer_user=""
 mailer_password=""
 locale="zh_CN"
 secret="29f96e9e70c2797cb77dd088d3954d3c38d9b33f"
登入後複製

   

3.創建控制器:

  控制器的名字一定得是HelloController.php,原因很簡單,因為你路由已經把控制器的名字給定下來了,在上面路由文件中的第4行和第7行中的控制器都是以AcmeHelloBundle:Hello開頭的,其中AcmeHelloBundle表示Bundle名,而Hello則表示控制器名,所以控制器必須是HelloController.php,Controller名符是命名約定。而至於後面的index和say則是控制器類別中的方法。以下定義了index方法,當然方法名稱為indexAction這個也是命名約定:

http://localhost/Symfony/web/app_dev.php
登入後複製

   

這樣,當我們在瀏覽器中輸入

php app/console gen:bundle "AcmeHelloBundle" src
  为了确保Acme名称空间可以被自动加载,请在你的app/autoload.php文件添加下列语句:
$loader->registerNamespaces(array(
 // ...
 //添加自定义的名称空间
 &#39;Acme&#39; => __DIR__.&#39;/../src&#39;,
 // ...
));
  最后是将该Bundle注册到Symfony2中,请在你的app/AppKernel.php文件中添加下列语句:
// app/AppKernel.php
public function registerBundles()
{
 $bundles = array(
  // ...
  new AcmeHelloBundleAcmeHelloBundle(),
 );
  
 // ...
  
 return $bundles;
}
登入後複製

   

4.建立範本:

  為了能夠重複使用佈局檔案中的區塊,可以使用範本來取代控制器中的HTML語句。首先建立頁面佈局檔案:

# app/config/routing.yml
homepage:
 pattern: /
 defaults: { _controller: FrameworkBundle:Default:index }
hello:
 resource: "@AcmeHelloBundle/Resources/config/routing.yml"
登入後複製

   

  注意,該檔案位於app/Resources/views/目錄中,作用範圍是整個應用程式的全域範本檔案。在該文件中定義了兩個區塊:title和body。接下來就是創建一個專用於Hello控制器的模板,如下所示:

# src/Acme/HelloBundle/Resources/config/routing.yml
hello:
 pattern: /hello/{name}
 defaults: { _controller: AcmeHelloBundle:Hello:index, name:&#39;pu&#39; }
登入後複製

   

  在該文件中,它繼承了全局模板,並且定義了區塊body,這樣就覆寫了全局模板中的body區塊。如果系統在渲染到該模板時,會將區塊body覆寫全域模板的區塊body,再進行渲染。

  最後,將控制器中的HTML語句改成渲染上述模板即可:

// src/Acme/HelloBundle/Controller/HelloController.php
namespace AcmeHelloBundleController;
use SymfonyComponentHttpFoundationResponse;
class HelloController
{
 public function indexAction($name)
 {
  return new Response(&#39;<html><body>Hello &#39;.$name.&#39;!</body></html>&#39;);
 }
}
登入後複製

   

更多高效能PHP框架Symfony2經典入門教學相關文章請關注PHP教程網!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24