SyMfonAK - vyvíjame databázy pomocou frameworku Symfony
Odporúčané praktiky - konfigurácia
Symfony dokumentácia → Odporúčané praktiky - konfigurácia
originál dokumentácia
Konfigurácia zahŕňa rôzne oblasti, infraštruktúru, bezpečnosť a tiež rôzne prostredie, vývoj, produkčné prostredie. Symfony odporúča preto rozdeliť konfigurácia na tri časti.
Obsah
Konfigurácia vzťahujúca sa na infraštruktúru
Súbor .env
Vo vývojovom prostredí použi .env alebo .env.local
# .env ###> doctrine/doctrine-bundle ### DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/blog.sqlite ###< doctrine/doctrine-bundle ### ###> symfony/swiftmailer-bundle ### MAILER_URL=smtp://localhost?encryption=ssl&auth_mode=login&username=&password= ###< symfony/swiftmailer-bundle ### # ...
Tieto nastavenia sa nenachádzajú v config/services.yml, pretože neovplyvňujú funkčnosť systému. Je jedno, kde sa nachádza databáza, a pod.
Pozor, $_ENV, $_SERVER a phpinfo() obsahujú dôležité a citlivé informácie. Dajte pozor, aby ste ich nespristúpnili bežným užívateľom!
Kánonické parametre
Všetky premenné aplikácie treba definovať s súbore .env
Od novembra 2018 je už tento nový systém. Dovtedy bol odlišný, so súborom .env.dist. Je o tom článok
Aplikácie so vzťahom k aplikácii
Nastavenia ovplyvňujúce aplikáciu nastavujte v súbore config/services.yaml
Konštanty verzus konfiguračné parametre
Málo sa meniace hodnoty nastavte ako konštanty a nie parametre systému. Parametre ako napríklad:
# config/services.yaml parameters: homepage.number_of_items: 10
treba nastaviť ako konštantu, napríklad takto:
// src/Entity/Post.php namespace App\Entity; class Post { const NUMBER_OF_ITEMS = 10; // ... }
Výhoda: sú prístupné v celej aplikácii! Premenné systému sú prístupné len na miestach s prístupom do kontajnera Symfony.
Konštanty využijete v twig šablónach:
<p> Displaying the {{ constant('NUMBER_OF_ITEMS', post) }} most recent results. </p>
Konštanty sú pristupné v repositároch Doctrine, kde premenné nie:
namespace App\Repository; use App\Entity\Post; use Doctrine\ORM\EntityRepository; class PostRepository extends EntityRepository { public function findLatest($limit = Post::NUMBER_OF_ITEMS) { // ... } }
Nevýhodou je problematické predefinovanie hodnoty konštanty v testoch.
Náš vlastný príklad
1. v adresári src sme založili adresár Utilities a tam triedu pre konštanty:
<?php // src/Utilities/Konstanty.php namespace App\Utilities; class Konstanty{ const VERZIA_PRIDAJ = ' ver. 1.4.2'; } ?>
Využitie v twig šablóne:
{{ constant('App\\Utilities\\Konstanty::VERZIA_PRIDAJ') }}
Mená parametrov
Treba, aby boli krátke a používané s prefixom aplikácie.
Zopár ukážok s komentárom:
# config/services.yaml parameters: # toto nie je dobré, príliš všeobecné a nenanznačuje zmysel app.dir: '...' # takto je to lepšie, jednoduché a naznačuje význam app.contents_dir: '...' # je v poriadku používať bodky, podčiarkniky # potom treba byť nemenný v používanom štýle, systéme app.dir.contents: '...' app.contents-dir: '...'