首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Symfony 快速入門:十分鐘打造第一個 CRUD 應用

     編輯:PHP 相關知識

Symfony 快速入門:十分鐘打造第一個 CRUD 應用

Symfony 是一個強大的 PHP Web 開發框架,採用 MVC 架構並內建依賴注入容器。本教程將引導你在十分鐘內完成一個簡單的文章管理系統(增刪改查),即使完全不熟悉 Symfony 也能輕松上手。

專案初始化與環境準備

首先確認電腦已安裝 PHP(建議 5.4+ 版本,內建開發伺服器)與 Git。無需安裝 XAMPP 等複雜環境,僅需確保命令列可執行 php 指令。

建立專案目錄並安裝 Composer 依賴管理工具:

$ mkdir symfony-sample && cd symfony-sample
$ curl -sS https://getcomposer.org/installer | php

使用 Composer 建立 Symfony 2.6.0 專案:

$ php composer.phar create-project symfony/framework-standard-edition mysampleproject/ 2.6.0

安裝過程中會詢問資料庫設定,可先全部按 Enter 略過,稍後統一修改設定檔。安裝完成後,將專案檔案移至根目錄:

$ mv mysampleproject/* ./
$ rm -rf mysampleproject

資料庫與參數設定

編輯 app/config/parameters.yml,貼上以下測試用設定(請將 secret 改為隨機字串):

parameters:
    database_driver: pdo_mysql
    database_host: localhost
    database_port: 3306
    database_name: symfony
    database_user: root
    database_password: root
    mailer_transport: smtp
    mailer_host: localhost
    mailer_user: null
    mailer_password: null
    locale: en
    secret: ChangeThisLineAsYouWish_ioiuqwoieru

接著編輯 app/config/config.yml,在 doctrine.dbal 區塊補上字元集設定:

driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
path: "%database_path%"

建立 Bundle(功能模組)

Bundle 是 Symfony 的核心概念,可視為一組獨立功能的封裝(如用戶管理、文章系統)。使用指令產生骨架:

$ php app/console generate:bundle
Bundle namespace: Symfony/Bundle/SampleBundle
Bundle name [SymfonySampleBundle]:
Target directory [/path/to/src]:
Configuration format (yml, xml, php, or annotation): yml
Do you want to generate the whole directory structure [no]? yes
Do you confirm generation [yes]? yes

產生的結構包含 Entity/(模型)、Controller/(控制器)、Resources/views/(模板)等目錄。

設計實體(Entity)

實體對應資料表,代表業務邏輯核心。使用 Doctrine 指令互動式建立 Article 實體:

$ php app/console generate:doctrine:entity
The Entity shortcut name: SymfonySampleBundle:Article
Configuration format (yml, xml, php, or annotation) [annotation]: yml
New field name (press <return> to stop adding fields): title
Field type [string]: string
Field length [255]: 200
New field name: content
Field type [string]: text
New field name: author
Field type [string]: string
Field length [255]: 20
New field name: (press Enter)
Do you want to generate an empty repository class [no]? yes

產生的 Entity/Article.php 包含 id、title、content、author 屬性及 Getter/Setter。執行指令同步資料庫結構:

$ php app/console doctrine:schema:update --force

加入驗證約束

修改 Article.php,使用 Assert 註解加入業務規則:標題、內容不可為空,標題長度不超過 200 字,作者可為空。

use Symfony\Component\Validator\Constraints as Assert;
// ...
/** @Assert\NotBlank(message="標題不可為空") @Assert\Length(max=200, maxMessage="標題不能超過200個字") */
private $title;
/** @Assert\NotBlank(message="文章內容不可為空") */
private $content;
/** @ORM\Column(name="author", type="string", length=20, nullable=true) */
private $author;

再次執行 doctrine:schema:update --force 更新資料表。

一鍵生成 CRUD 介面

使用內建產生器建立完整的後台管理介面:

$ php app/console generate:doctrine:crud
The Entity shortcut name: SymfonySampleBundle:Article
Do you want to generate the "write" actions [no]? yes
Configuration format (yml, xml, php, or annotation) [annotation]: yml
Routes prefix [/article]: /article

修改 DefaultController::indexAction() 導向文章列表:

/** @Route("/", name="welcome") @Template() */
public function indexAction() { return array(); }

編輯 Resources/views/Default/index.html.twig:

<a href="{{ path('article') }}">文章管理</a>

啟動測試

啟動 PHP 內建伺服器:

$ php app/console server:run

瀏覽器訪問 https://localhost:8000 即可看到文章管理介面,具備新增、編輯、刪除、列表等功能。所有程式碼位於 Controller/ArticleController.php、Form/ArticleType.php、Resources/views/Article/。

本教程示範如何利用 Symfony 強大的代碼生成能力快速產出原型,實際開發中可根據需求客製化各層邏輯。完整原始碼可參考 GitHub 範例專案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved