亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Symfony怎么用

發布時間:2021-09-16 15:51:22 來源:億速云 閱讀:98 作者:小新 欄目:開發技術

這篇文章主要介紹了Symfony怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Symfony是一個強大的基于PHP的Web開發框架,在這里我們用十分鐘的時間來做一個簡單的增刪改查的程序, 任何不熟悉Symfony的人都可以通過這個教程完成自己的第一個Symfony程序。

如果需要這個樣例程序的全部源代碼,可以訪問 這里 ,或者通過下面的方式獲取源代碼:

$git clone https://github.com/saharabear/symfony-sample.git

項目初始化

首先,需要你在自己的電腦中安裝PHP環境并安裝git.這方面的內容屬于基礎內容,網絡上有大量的教程,在這里就不多介紹了,不過要提示的一點是:PHP從5.4開始, 已經內置了測試用服務器,Symfony也擁抱了這個由PHP內置的服務器,只需要在命令行中使用$php app/console server:run 就可以 啟動基于Symfony框架的PHP程序進行測試,因此不必要使用XAMPP這一類復雜的集成環境,直接安裝PHP并保證在命令行下可以執行php命令就可以了。

然后,我們需要建立一個新的目錄,名字叫symfony-sample,Symfony使用一個叫composer的程序管理各種類庫的依賴關系,因此如果你的機器上 安裝了composer,就可以直接跳過這一步,如果沒有安裝,可以用下面的命令安裝最新版本的composer.

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

如果希望了解更多關于composer的信息,可以參考這個網站。

安裝完成composer后,我們可以開始安裝當前最新版本的Symfony2.6.0

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

安裝過程中,需要填寫數據庫等信息,在這個例子中,我們會使用mysql數據庫,因此你可以一路按回車鍵,先不要關心這一切配置應該如何填寫。反正 Symfony會在安裝成功后,生成一個配置文件,叫app/config/parameters.yml,下面我會提供一個parameters.yml文件的 內容樣本,只要復制進去就可以了,先不必關注這么多細節。

剛才創建mysampleproject以后,在symfony-sample目錄下生成了mysampleproject目錄,我習慣于將程序放在項目的根目錄下,因此執行下面的幾個命令, 就可以把項目從symfony-sample/mysampleproject目錄中,移到symfony-sample目錄中

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

理論上來講,我們已經完成了Symfony項目的創建,不過剛才提到的parameters.yml文件還沒有解釋。這個parameters.yml是Symfony的全局配置文件, 無論是數據庫配置信息還是其他的各種配置,都可以放在這個文件中。下面是我們需要使用的測試用的parameters.yml,記得把最后一行的值修改為一個隨機值

# This file is auto-generated during the composer install
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/parameters.yml文件中的內容,然后編輯app/config/config.yml,找到下面幾行,把最后一行添加進去并保存。

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

好了,這樣我們就完成了基本的Symfony程序的配置,你現在有了一個配置好了數據庫,郵件發送器,日志系統的基本程序原型。下面,我們就開始編寫自己的Symfony程序。

建立Bundle

先說一下什么是Bundle。Symfony是以DI為核心的,可能你不知道什么是DI,沒關系,這不重要,你可以把Symfony的DI理解成為一個功能池,把程序中的所有功能都做成Bundle,或者你把Bundle理解成一組php文件組合而成的程序就可以。 比如用戶注冊,登錄功能做成一個Bundle,你也可以把一個論壇的發帖回貼功能做成一個Bundle,自然也可以把文章管理做成一個Bundle,然后用一個Bundle去調用和配置不同的Bundle,那么你就可以把網站組裝起來了,而你寫的各種Bundle,在其他的應用程序中還可以繼續復用,這樣寫的Bundle越多,可復用性就越強,制作新項目的時候也越有利。

我們現在就來建立自己的Bundle.在命令行中,使用命令:

$php app/console generate:bundle
Bundle namespace: Symfony/Bundle/SampleBundle
Bundle name [SymfonySampleBundle]:
Target directory [/home/saharabear/workspace/symfony-sample/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
Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]? yes
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]? yes

這樣就成功建立了我們的Bundle,名字叫SymfonySampleBundle,我們使用的Bundle namespace是Symfony/Bundle/SampleBundle,這是一種約定,我們還可以建立其他的Bundle,比如Symfony/Bundle/PostBundle, 或者Symfony/Bundle/ArticleBundle,而對應的Bundle name就分別是SymfonyPostBundle或者SymfonyArticleBundle。你也可以自己建立這幾個Bundle,這并不會影響當前我們的教程。

對了,在我們建立的Bundle中,分別會生成下面幾個目錄:

① Entity:這個目錄并不是必須的,很多情況下只有在生成實體的時候才會生成,放置模型,也就是MVC中的M
② Controller:這個目錄會生成DefaultController.php,你可以在這里建立自己的Controller控制器,也就是MVC中的C
③ Resources:這個目錄下面還有子目錄,其中views放置的是模板,也就是MVC中的V,而public放置的是靜態文件,比如js, css, images等等
④ Tests:放置單元測試與集成測試的代碼,在這個樣例程序中暫時不需要
⑤ DependencyInjection:與DI相關的目錄,暫時也不需要去了解
⑥ SymfonySampleBundle.php:當前這個Bundle的定義文件

更多細節可以去閱讀Symfony 的官方文檔,而當前的重點是把這個Symfony的樣例程序運行起來。

設計實體

在MVC的設計理念中,M是最重要的,因為M表達的內容是業務邏輯。我覺得如果這個地方往深入去探討,會一直探討到富血模型或者貧血模型,不過目前在這個教程中根本 不需要考慮這么多,你只需要知道實體就是MVC中的M,用于表達業務邏輯。比如說,我們要開發一個文章管理的系統,那么文章本身就代表的業務邏輯。比如,我們的文章要有 標題,內容,作者,那么這三項就屬于業務邏輯,而標題不能夠為空,不能超過200長度,內容不能為空,作者卻是可以為空的,這些也屬于業務邏輯。同時,這個文章需要被 存儲起來,比如存儲到數據庫中,那么這個M就應該能夠映射到數據庫的表中。我們把這個M,叫實體。

還是少說廢話,直接上代碼。那么如何建立實體呢?當然不是從頭一點一點地寫,而是直接用下面的命令生成:

$php app/console generate:doctrine:entity
Welcome to the Doctrine2 entity generator
This command helps you generate Doctrine2 entities.
First, you need to give the entity name you want to generate.
You must use the shortcut notation like AcmeBlogBundle:Post.
The Entity shortcut name: SymfonySampleBundle:Article
Determine the format to use for the mapping information.
Configuration format (yml, xml, php, or annotation) [annotation]:yml
Instead of starting with a blank entity, you can add some fields now.
Note that the primary key will be added automatically (named id).
Available types: array, simple_array, json_array, object,
boolean, integer, smallint, bigint, string, text, datetime, datetimetz,
date, time, decimal, float, blob, guid.
New field name (press to stop adding fields): title
Field type [string]:
Field length [255]: 200
New field name (press to stop adding fields): content
Field type [string]: text
New field name (press to stop adding fields): author
Field type [string]:
Field length [255]: 20
New field name (press to stop adding fields):
Do you want to generate an empty repository class [no]? yes
Summary before generation
You are going to generate a "SymfonySampleBundle:Article" Doctrine2 entity
using the "yml" format.
Do you confirm generation [yes]? yes
Entity generation
Generating the entity code: OK
You can now start using the generated code!

經過這些命令,你會發現在Entity中建立了新的文件Article.php,代碼如下:

namespace Symfony\Bundle\SampleBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * Article
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Symfony\Bundle\SampleBundle\Entity\ArticleRepository")
 */
class Article
{
  /**
   * @var integer
   *
   * @ORM\Column(name="id", type="integer")
   * @ORM\Id
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;
  /**
   * @var string
   *
   * @ORM\Column(name="title", type="string", length=200)
   */
  private $title;
  /**
   * @var string
   *
   * @ORM\Column(name="content", type="text")
   */
  private $content;
  /**
   * @var string
   *
   * @ORM\Column(name="author", type="string", length=20)
   */
  private $author;
  /**
   * Get id
   *
   * @return integer
   */
  public function getId()
  {
    return $this->id;
  }
  /**
   * Set title
   *
   * @param string $title
   * @return Article
   */
  public function setTitle($title)
  {
    $this->title = $title;
    return $this;
  }
  /**
   * Get title
   *
   * @return string
   */
  public function getTitle()
  {
    return $this->title;
  }
  /**
   * Set content
   *
   * @param string $content
   * @return Article
   */
  public function setContent($content)
  {
    $this->content = $content;
    return $this;
  }
  /**
   * Get content
   *
   * @return string
   */
  public function getContent()
  {
    return $this->content;
  }
  /**
   * Set author
   *
   * @param string $author
   * @return Article
   */
  public function setAuthor($author)
  {
    $this->author = $author;
    return $this;
  }
  /**
   * Get author
   *
   * @return string
   */
  public function getAuthor()
  {
    return $this->author;
  }
}

你可以一行不改地使用這些代碼。這時候我們再來做幾個神奇的操作:

復制代碼 代碼如下:

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

這個操作,已經幫助你通過Article.php建立了數據庫和數據表,你不需要自己操作這個過程,下面我們還會對Article.php進行改造,而到時候只需要重新 執行上面的這個操作,Symfony會幫助你自動修改數據庫的表結構。

添加約束

上面我們創建了Article.php,既然這個實體代表了具體的業務邏輯,因此我們要考慮幾個現實的問題:

1. 用戶必須填寫標題和內容
2. 用戶填寫的標題不能超過200個字
3. 用戶可以不填寫作者

這些就屬于業務邏輯,而我們可以修改Article.php如下,以增加相應的業務邏輯的約束:

namespace Symfony\Bundle\SampleBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
 * Article
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Symfony\Bundle\SampleBundle\Entity\ArticleRepository")
 */
class Article
{
  /**
   * @var integer
   *
   * @ORM\Column(name="id", type="integer")
   * @ORM\Id
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;
  /**
   * @var string
   * @Assert\NotBlank(message="標題不可為空")
   * @Assert\Length(
   *   max=200,
   *   maxMessage="標題不能超過200個字"
   * )
   * @ORM\Column(name="title", type="string", length=200)
   */
  private $title;
  /**
   * @var string
   *
   * @Assert\NotBlank(message="文章內容不可為空")
   * @ORM\Column(name="content", type="text")
   */
  private $content;
  /**
   * @var string
   *
   * @ORM\Column(name="author", type="string", length=20,nullable=true)
   */
  private $author;
  /**
   * Get id
   *
   * @return integer
   */
  public function getId()
  {
    return $this->id;
  }
  /**
   * Set title
   *
   * @param string $title
   * @return Article
   */
  public function setTitle($title)
  {
    $this->title = $title;
    return $this;
  }
  /**
   * Get title
   *
   * @return string
   */
  public function getTitle()
  {
    return $this->title;
  }
  /**
   * Set content
   *
   * @param string $content
   * @return Article
   */
  public function setContent($content)
  {
    $this->content = $content;
    return $this;
  }
  /**
   * Get content
   *
   * @return string
   */
  public function getContent()
  {
    return $this->content;
  }
  /**
   * Set author
   *
   * @param string $author
   * @return Article
   */
  public function setAuthor($author)
  {
    $this->author = $author;
    return $this;
  }
  /**
   * Get author
   *
   * @return string
   */
  public function getAuthor()
  {
    return $this->author;
  }
}

然后執行同步數據庫的操作:

$ php app/console doctrine:schema:update --force
Updating database schema...
Database schema updated successfully! "1" queries were executed

增刪改查

好了,我們來做一個針對文章的增刪改查操作。首先請執行下面的命令:

$ php app/console generate:doctrine:crud
 Welcome to the Doctrine2 CRUD generator
This command helps you generate CRUD controllers and templates.
First, you need to give the entity for which you want to generate a CRUD.
You can give an entity that does not exist yet and the wizard will help
you defining it.
You must use the shortcut notation like AcmeBlogBundle:Post.
The Entity shortcut name: SymfonySampleBundle:Article
By default, the generator creates two actions: list and show.
You can also ask it to generate "write" actions: new, update, and delete.
Do you want to generate the "write" actions [no]? yes
Determine the format to use for the generated CRUD.
Configuration format (yml, xml, php, or annotation) [annotation]: yml
Determine the routes prefix (all the routes will be "mounted" under this
prefix: /prefix/, /prefix/new, ...).
Routes prefix [/article]: /article
 Summary before generation
You are going to generate a CRUD controller for "SymfonySampleBundle:Article"
using the "yml" format.
Do you confirm generation [yes]? yes
 CRUD generation
Generating the CRUD code: OK
Generating the Form code: OK
 You can now start using the generated code!

然后請編輯DefaultController.php中的indexAction如下:

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

編輯Resource/views/Default/index.html.twig內容如下:

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

讓我們看看神奇的事情,啟動內置的測試服務器:

$php app/console server:run

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Symfony怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗城| 德州市| 磴口县| 兴文县| 桐柏县| 郑州市| 广灵县| 马尔康县| 泰州市| 连山| 南城县| 来宾市| 翼城县| 孟津县| 文山县| 台南市| 峡江县| 永新县| 青田县| 泗洪县| 梨树县| 胶州市| 宁化县| 烟台市| 霸州市| 葫芦岛市| 大宁县| 侯马市| 丰镇市| 吴堡县| 新兴县| 武义县| 乌什县| 饶平县| 阳城县| 扎囊县| 桃江县| 军事| 东方市| 龙泉市| 丹江口市|