<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                {% raw %} # Symfony 簡介 > 原文: [http://zetcode.com/symfony/intro/](http://zetcode.com/symfony/intro/) 這是 Symfony 的入門教程。 它展示了 Symfony PHP 框架,并展示了如何創建簡單的示例。 本教程介紹了 Symfony 版本 4。 ## Symfony Symfony 是一組可重用的 PHP 組件和一個用于 Web 項目的 PHP 框架。 Symfony 于 2005 年發布為免費軟件。Symfony 的原始作者是 Fabien Potencier。 Symfony 受到 Spring 框架的極大啟發。 Symfony 使用了幾個 PHP 開源項目,例如 Doctrine 對象關系映射庫,PDO 數據庫抽象層,PHPUnit 測試框架,Twig 模板引擎和 Swift Mailer 電子郵件庫。 Symfony 創建了自己的組件,包括 Symfony 依賴注入器和 Symfony YAML 解析器。 ## 設置 Symfony 項目 為了創建一個 Symfony 4 項目,我們需要 PHP 7(以及相關的庫,例如 php-xml 或 php-mcrypt)和`composer`。 項目相關性將寫入`composer.json`文件。 ```php $ composer create-project symfony/skeleton symfirst ``` 使用`composer`,我們創建了一個名為`first`的新 Symfony 骨架項目。 Symfony 框架等效于微型框架,在微型框架中,我們需要自己安裝所有模塊。 我們決定要安裝什么模塊。 這對學習有好處。 ```php $ cd symfirst ``` 不要忘記去項目目錄。 ## Symfony 項目結構 作曲家創建了一個 Symfony 應用結構。 ```php $ ls -p bin/ composer.lock public/ symfony.lock vendor/ composer.json config/ src/ var/ ``` `bin`目錄包含`console`工具,該工具是用于執行各種類型命令的命令行工具。 `public`目錄包含 Web 文件。 在 Symfony 骨架應用中,它包含一個文件:`index.php`,它是一個 Symfony 前端控制器。 第三方依存關系存儲在`vendor`目錄中。 `config`目錄包含配置文件。 源代碼寫在`src`目錄中。 `var`目錄包含臨時文件,例如緩存數據。 在`composer.json`中定義了 Composer 依賴項。 `composer.lock`記錄已安裝的確切版本,以便以后可以重新安裝。 它可以確保每個在項目上工作的人都具有相同的確切版本的庫。 `symfony.lock`文件是 Symfony 配方的正確鎖定文件。 還有兩個特定的隱藏文件:`.env`和`.env.dist`。 `.env`的內容成為環境變量。 環境變量由各種工具(例如 ORM 庫)使用。 `.env`可能包含敏感或計算機特定的數據; 因此,不應將其提交到存儲庫。 相反,`.env.dist`帶有一些偽值。 ## 安裝 Symfony 項目依賴項 接下來,我們將安裝一些項目依賴項。 ```php $ composer require server maker --dev ``` 我們安裝了開發服務器和 maker 組件,該組件用于生成命令,控制器,表單類或事件訂閱者。 ```php $ composer require annotations twig ``` 我們將安裝兩個附加的 Symfony 模塊。 `annotations`提供了一種使用注解配置控制器的方法。 `twig`允許在 Symfony 應用中使用 Twig 模板引擎。 ## Symfony 創建控制器 Symfony 控制器是一個 PHP 函數,它從`Request`對象讀取信息,并創建并返回`Response`對象。 響應可能是 HTML 頁面,JSON,XML,文件下載,重定向,404 錯誤等等。 ```php $ php bin/console make:controller HelloController ``` 使用`console`工具,創建`HelloController`。 在`src/Controller/`目錄中創建控制器。 `src/Controller/HelloController.php` ```php <?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class HelloController extends AbstractController { /** * @Route("/plain", name="plain") */ public function helloPlain(): Response { return new Response("Hello there", Response::HTTP_OK, ['content-type' => 'text/plain']); } } ``` 這是`HelloController`。 它位于`src/Controller/HelloController.php`文件中。 ```php /** * @Route("/plain", name="plain") */ public function helloPlain() { ``` 路由是從 URL 路徑到控制器方法的映射。 `@Route`注解將`/plain` URL 路徑映射到`helloPlain()`函數。 ```php return new Response("Hello there", Response::HTTP_OK, ['content-type' => 'text/plain']); ``` 該函數返回一個`Response`對象。 `Response`對象保存需要從給定請求發送回客戶端的所有信息。 構造器最多包含三個參數:響應內容,狀態代碼和 HTTP 標頭數組。 默認狀態碼為`Response::HTTP_OK`,內容類型為`text/html`。 ```php $ php bin/console server:run ``` 使用`bin/console server:run`命令啟動 Web 服務器。 要停止服務器,我們使用`bin/console server:stop`命令。 ```php $ curl localhost:8000/plain Hello there ``` 我們向普通路由發出 GET 請求,并查看文本響應。 ## Symfony 與 Twig 模板 當我們使用`composer require twig`命令時,將 Twig 模板引擎安裝到項目目錄中。 還創建了一個`templates`目錄。 在該目錄中,我們放置模板文件。 模板文件具有`html.twig`擴展名。 `src/Controller/HelloController.php` ```php <?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class HelloController extends AbstractController { /** * @Route("/plain", name="plain") */ public function helloPlain(): Response { return new Response("Hello there", Response::HTTP_OK, ['content-type' => 'text/plain']); } /** * @Route("/twig", name="twig") */ public function helloTwig(): Response { $message = "Hello from Twig"; return $this->render('hello/index.html.twig', ["message" => $message]); } } ``` 我們已經更新了`HelloController.php`文件; 我們添加了一條新路由。 這次,該函數呈現了一個 Twig 模板。 ```php /** * @Route("/twig", name="twig") */ public function helloTwig(): Response { ``` `helloTwig()`函數映射到`twig`路徑。 ```php $message = "Hello from Twig"; return $this->render('hello/index.html.twig', ["message" => $message]); ``` Twig 渲染位于`templates`目錄中的`'hello/index.html.twig`文件。 `render()`方法也接受數據; 在我們的例子中,它是一個消息變量。 模板引擎將數據與 HTML 結構合并。 `templates/hello/index.html.twig` ```php <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello</title> </head> <body> {{ message }} </body> </html> ``` 這是 Twig 模板文件。 ```php {{ message }} ``` `{{ }}`是一種特殊的 Twig 語法,它顯示變量的內容。 ```php $ curl localhost:8000/twig <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello</title> </head> <body> Hello from Twig </body> </html> ``` 當我們連接到樹枝路徑時,我們將獲得此 HTML 輸出。 在本教程中,我們介紹了 Symfony 框架。 您可能也對以下相關教程感興趣: [Symfony 表單教程](/symfony/form/), [Symfony 請求教程](/symfony/request/), [Twig 教程](/php/twig/), [PHP 教程](/lang/php/)。 列出[所有 Symfony 教程](/all/#symfony)。 {% endraw %}
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看