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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Symfony 服務教程 > 原文: [http://zetcode.com/symfony/service/](http://zetcode.com/symfony/service/) Symfony 服務教程展示了如何在 Symfony 中創建服務。 該服務從數據庫中獲取數據。 ## Symfony Symfony 是一組可重用的 PHP 組件和一個用于 Web 項目的 PHP 框架。 Symfony 于 2005 年發布為免費軟件。Symfony 的原始作者是 Fabien Potencier。 Symfony 受到 Spring 框架的極大啟發。 ## Symfony 服務 Symfony 應用的功能分為稱為服務的較小塊。 服務是一個 PHP 對象。 服務位于 Symfony 服務容器中。 有許多內置服務。 可以通過使用類型提示在 Symfony 應用中自動連接服務。 使用`php bin/console debug:container`命令生成可用服務的列表。 ```php # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name App\: resource: '../src/*' exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' ``` 這是一個`services.yaml`配置文件。 `src`目錄中的 PHP 類可以通過類型提示自動注入到我們的代碼中。 ## Symfony 服務示例 在以下示例中,我們從 MySQL 數據庫中獲取數據。 數據檢索委托給特定的應用組件:Symfony 服務。 ```php $ composer create-project symfony/skeleton simpleservice $ cd simpleservice ``` 使用`composer`,我們創建一個新的 Symfony 骨架項目。 然后我們找到新創建的項目目錄。 ```php $ composer req annot orm-pack ``` 我們安裝了三個模塊:`annotations`和`orm-pack`。 ```php $ composer req server maker --dev ``` 我們安裝了開發 Web 服務器和 Symfony `maker`。 `countries_mysql.sql` ```php CREATE TABLE countries(id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), population INT); INSERT INTO countries(name, population) VALUES('China', 1382050000); INSERT INTO countries(name, population) VALUES('India', 1313210000); INSERT INTO countries(name, population) VALUES('USA', 324666000); INSERT INTO countries(name, population) VALUES('Indonesia', 260581000); INSERT INTO countries(name, population) VALUES('Brazil', 207221000); INSERT INTO countries(name, population) VALUES('Pakistan', 196626000); INSERT INTO countries(name, population) VALUES('Nigeria', 186988000); INSERT INTO countries(name, population) VALUES('Bangladesh', 162099000); INSERT INTO countries(name, population) VALUES('Nigeria', 186988000); INSERT INTO countries(name, population) VALUES('Russia', 146838000); INSERT INTO countries(name, population) VALUES('Japan', 126830000); INSERT INTO countries(name, population) VALUES('Mexico', 122273000); INSERT INTO countries(name, population) VALUES('Philippines', 103738000); ``` 這是一些測試數據。 它在 MySQL 中創建一個小表。 我們可以使用 MySQL `source`命令執行文件。 `config/packages/doctrine.yaml` ```php ... doctrine: dbal: # configure these for your database server driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci ... ``` 默認情況下,我們有一個為 Doctrine DBAL 配置的 MySQL 數據庫。 教義數據庫抽象層(DBAL)是位于 PDO 之上的抽象層,并提供了直觀,靈活的 API,可用于與最流行的關系數據庫進行通信。 `.env` ```php ... DATABASE_URL=mysql://user12:s$cret@localhost:3306/mydb ``` 在`.env`文件中,我們配置數據庫 URL。 ```php $ php bin/console make:controller DataController ``` 用`bin/console`創建一個`DataController`。 `src/Controller/DataController.php` ```php <?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use App\Service\DataService; class DataController extends AbstractController { /** * @Route("/data", name="data") */ public function index(DataService $dserv) { $countries = $dserv->findAll(); return $this->json([ 'data' => $countries ]); } } ``` `DataController`以 JSON 格式返回`countries`表中的所有行。 它使用`DataService`服務。 ```php public function index(DataService $dserv) { ``` 通過參數注入創建`DataService`。 > **注意**:為簡單起見,我們已將數據庫訪問代碼放置在服務類中。 生產應用中還有另一層:存儲庫。 數據庫訪問代碼放置在存儲庫類中,該存儲庫類從服務類中調用。 `src/Service/DataService.php` ```php <?php namespace App\Service; use Doctrine\DBAL\Driver\Connection; class DataService { private $conn; public function __construct(Connection $conn) { $this->conn = $conn; } /** * Finds all countries */ public function findAll() { $queryBuilder = $this->conn->createQueryBuilder(); $queryBuilder->select('*')->from('countries'); $data = $queryBuilder->execute()->fetchAll(); return $data; } } ``` `DataService`包含一種從`countries`表中檢索所有行的方法。 它使用 Symfony 的 DBAL 執行查詢。 ```php public function __construct(Connection $conn) { $this->conn = $conn; } ``` 該服務還使用自動裝配來創建`Connection`對象。 ```php /** * Finds all countries */ public function findAll() { $queryBuilder = $this->conn->createQueryBuilder(); $queryBuilder->select('*')->from('countries'); $data = $queryBuilder->execute()->fetchAll(); return $data; } ``` 我們使用 DBAL `QueryBuilder`從表中獲取所有行。 Doctrine DBAL `QueryBuilder`提供了一個方便,流暢的接口來創建和運行數據庫查詢。 ```php $ php bin/console server:run ``` Web 服務器已啟動。 ```php $ curl localhost:8000/data {"data":[{"id":"1","name":"China","population":"1382050000"}, {"id":"2","name":"India","population":"1313210000"}, {"id":"3","name":"USA","population":"324666000"}, {"id":"4","name":"Indonesia","population":"260581000"}, {"id":"5","name":"Brazil","population":"207221000"}, {"id":"6","name":"Pakistan","population":"196626000"}, {"id":"7","name":"Nigeria","population":"186988000"}, {"id":"8","name":"Bangladesh","population":"162099000"}, {"id":"9","name":"Nigeria","population":"186988000"}, {"id":"10","name":"Russia","population":"146838000"}, {"id":"11","name":"Japan","population":"126830000"}, {"id":"12","name":"Mexico","population":"122273000"}, {"id":"13","name":"Philippines","population":"103738000"}]} ``` 我們使用`curl`命令創建一個請求。 在本教程中,我們在 Symfony 中創建了一個簡單的服務。 該服務從數據庫中獲取數據,并在 Symfony 控制器中自動連線。 您可能也對以下相關教程感興趣: [Symfony 簡介](/symfony/intro/), [Doctrine DBAL `QueryBuilder`教程](/doctrine/querybuilder/), [Symfony DBAL 教程](/symfony/dbal/), [Symfony 上傳文件教程](/symfony/uploadfile/) , [Symfony 表單教程](/symfony/form/), [PHP 教程](/lang/php/)或列出[所有 Symfony 教程](/all/#symfony/)。
                  <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>

                              哎呀哎呀视频在线观看