symfony 4 框架安装与使用指南
注意:需要用PHP7.1版本进行操作。
创建一个新项目
第一步是创建项目。目前, 这需要通过composer create-project来完成。我们可能会释放一个工具来更快地引导项目。
走起:
composer create-project symfony/skeleton demo
cd demo
该命令将下载骨架, 该框架仅由一个composer.json
文件组成。
然后, 它将文件提取到demo
目录中, 并自动运行composer install
。symfony/flex
是要安装的第一个包, 以便它可以挂钩到Composer进程。当Composer安装 (或更新) 其他依赖项时, flex 在 flex 服务器上查找关联的“食谱”, 并执行它。通过添加到Composer输出的日志, 您可以看到在操作中的 Flex。
Installing symfony/skeleton (v4.0.6) - Installing symfony/skeleton (v4.0.6): Loading from cache Created project in demo Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 21 installs, 0 updates, 0 removals - Installing symfony/flex (v1.0.80): Loading from cache - Installing symfony/polyfill-mbstring (v1.8.0): Loading from cache - Installing symfony/console (v4.0.9): Loading from cache - Installing symfony/routing (v4.0.9): Loading from cache - Installing symfony/http-foundation (v4.0.9): Loading from cache - Installing symfony/yaml (v4.0.9): Loading from cache - Installing symfony/framework-bundle (v4.0.9): Loading from cache - Installing symfony/http-kernel (v4.0.9): Loading from cache - Installing symfony/event-dispatcher (v4.0.9): Loading from cache - Installing psr/log (1.0.2): Loading from cache - Installing symfony/debug (v4.0.9): Loading from cache - Installing symfony/finder (v4.0.9): Loading from cache - Installing symfony/filesystem (v4.0.9): Loading from cache - Installing psr/container (1.0.0): Loading from cache - Installing symfony/dependency-injection (v4.0.9): Loading from cache - Installing symfony/config (v4.0.9): Loading from cache - Installing psr/simple-cache (1.0.1): Loading from cache - Installing psr/cache (1.0.1): Loading from cache - Installing symfony/cache (v4.0.9): Loading from cache - Installing symfony/dotenv (v4.0.9): Loading from cache Writing lock file Generating autoload files Symfony operations: 4 recipes (51c278ffa7eb343a4e74c1f4ea5ccaa6) - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master - Configuring symfony/framework-bundle (>=3.3): From github.com/symfony/recipes:master - Configuring symfony/console (>=3.3): From github.com/symfony/recipes:master - Configuring symfony/routing (>=4.0): From github.com/symfony/recipes:master Executing script cache:clear [OK] Executing script assets:install --symlink --relative public [OK] Some files may have been created or updated to configure your new packages. Please review, edit and commit them: these files are yours. What's next? * Run your application: 1. Change to the project directory 2. Execute the php -S 127.0.0.1:8000 -t public command; 3. Browse to the http://localhost:8000/ URL. Quit the server with CTRL-C. Run composer require server --dev for a better web server. * Read the documentation at https://symfony.com/doc
完成后, 您应该看到 "下一步是什么" 部分, 它解释了可能的下一步, 如运行make serve
启动 PHP 内置的 web 服务器。在更进一步之前, 转到项目的目录: cd demo
.
What's next? * Run your application: 1. Change to the project directory 2. Execute the php -S 127.0.0.1:8000 -t public command; 3. Browse to the http://localhost:8000/ URL. Quit the server with CTRL-C. Run composer require server --dev for a better web server. * Read the documentation at https://symfony.com/doc
serve
是添加到本地Makefile
中的任务之一, 如 symfony/framework-bundle
食谱中所述。.
请注意, 某些命令在进程结束时自动安装并运行:
Executing script cache:clear [OK] Executing script assets:install --symlink --relative public [OK]
同样, 这些脚本被添加到项目的composer.json
文件中, 这是由 "symfony/framework-bundle
" 食谱定义的。
现在是初始化 Git 的好时机::
git init
git add .
git commit -m "initial set of files"
使用git add .
可以很好地处理创建一个 "好的" .gitignore
文件。
请记住, 骨架只有一个文件,composer.json
。请立即检查demo/
目录。还创建了一些文件。这些文件是根据已安装的软件包添加的, 如食谱中所述。
让我们现在检查目录结构。由于 "symfony/framework-bundle
" 依赖关系, 大多数文件都已添加。.
.env
文件定义了APP_ENV
和APP_SECRET
环境变量:
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=b1becb277ac66969a2f52321b1e5c028
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ###
这些注释允许 Flex "管理" 本节。当删除包时需要删除这些变量时, 这一点很有用。如果您删除这些注释, 那么 Flex 将无法自动管理这些变量了。有关类似示例, 可以查看.gitignore
。
如果您很好奇, 请检查新的 web 前端控制器的public/index.php
。
最有趣的文件在config/
下。主要入口点是空的routing.yaml
文件;您可以在此处添加项目的服务、参数和路由。在config/packages/
下, 还安装了默认配置, 用于symfony/framework-bundle
。请随意调整安装的配置文件或为您自己的需要添加更多。
最后, 但并非最不重要的是, FrameworkBundle
现在已在bundles.php
中注册。:
return [
'Symfony\Bundle\FrameworkBundle\FrameworkBundle' => ['all' => true],
];
即使bundle没有食谱, 它也会用symfony-bundle
类型检测composer包, 并自动为所有环境启用它们。这避免了在注册只是启用bundle的问题时创建食谱。
src/
目录是您可以在其中存储 PHP 类的位置。在composer.json
中注册的App\
命名空间下。请注意, 这是Kernel.php
也被安装为App\Kernel
的地方。.
现在, 是时候通过composer来安装一些新的依赖关系了。让我们先为您的项目添加一个更强大的 web 服务器:
composer req webserver
注意: req
require
的快捷方式 (作曲家 CLI 支持任何不明确的快捷方式; 使用rem
删除包)。
webserver是Symfony/web-server-bundle的别名。这是因为Symfony Flex知道如何将这些别名转换为完整的包名。Symfony/前缀始终是可选的。尝试Composer req workflow或Composer req LDAP。web-server-bundleq名称太长了,所以使用webserver或仅使用server
对于依赖项, Flex 还可以识别出比通常的composer多一些的版本, 主要是next
、previous
、和lts
stable.
如:
composer req cli:next
在移除依赖项时, 别名也起作用:
composer rem cli
它还删除了bin/console
二进制文件 (为了好玩, 请尝试此操作:composer rem framework-bundle
).
还记得我在安装Symfony bundle时写过关于开发人员体验的文章吗?让我们疯狂地安装一些真正“复杂”的东西,比如基于Doctrine的管理后台。要用多少步才能成功?它可能比你预期的要少,而且肯定更有趣。
首先, 让我们安装EasyAdminBundle:
composer req admin
除了安装管理后台 bundle程序外, 它还安装其所有可传递的依赖项, 并自动配置它们:TwigBundle
、 SecurityBundle
、 FrameworkExtraBundle
和DoctrineBundle
.
admin是一个“通用”词。这就是为什么我写的Symfony Flex食谱是固执己见的原因。只能有一个包别名为admin。ORM是另一个通用单词,目前别名为DoctrineORM。
通过php -S 127.0.0.1:8000 -t public或bin/console server:start
并转到http://localhost:8000/admin/
运行 PHP 内置 web 服务器。你应该得到一个错误, 因为还没有Doctrine entities存在。让我们在src/Entity/Product.php
中创建一个。:
namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="product") */ class Product { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ public $id; /** * @ORM\Column(type="string", length=100) */ public $name; /** * @ORM\Column(type="decimal", scale=2) */ public $price; /** * @ORM\Column(type="text") */ public $description; }
调整.env
中的数据库配置:
###> doctrine/doctrine-bundle ###
DB_URL=mysql://root@127.0.0.1:3306/symfony?charset=utf8mb4
###< doctrine/doctrine-bundle ###
运行以下命令初始化数据库:
./bin/console doctrine:database:create
./bin/console doctrine:schema:update --force
最后, 将Product
添加到由admin管理后台管理的entity列表中 (config/packages/easy_admin.yaml
):
easy_admin:
entities:
- App\Entity\Product
再次尝试http://localhost:8000/admin/
。如果一切运作良好, 您应该能够管理产品。
下面是一些您可以尝试的好别名:
sec-checker
安装 SensioLabs 安全检查器;req-checker
安装Symfony需求检查;;log
以安装 MonologBundle 及其所有依赖项template
安装Twig模板引擎;mailer
安装 Swiftmailer;profiler
安装 profiler;- ... 你明白了吧
由于不再需要symfony/symfony
,您可以获得更细粒度的依赖关系,但是一个接一个地安装每个Symfony组件可能会很麻烦。为了减轻痛苦,我正在尝试一个新的概念:“packs”。Pack不过是在Composer上注册的常规Git存储库,它包含一个composer.json
,它引用了一组相关的包。例如,我已经创建了一个debug-pack
pack , 可通过composer req debug-pack
安装。看看ORM pack 或 API pack。想象一下,假设web-pack
在composer.json
中没有引用任何内容,但是它与在public/
如favicons、robots.txt下安装一组默认文件的菜谱相关联。不错?想象一下Travis, Blackfire, 或 Docker也是如此。还是安装与当前Symfony标准版完全相同的依赖项的包?你的想象力是无限的。用现成的packages, packs,和它们的相关食谱编写应用程序。
Flex 启用分发组合, 而不是继承。新的方式更容易, 更灵活, 同时更强大。
现在,您可能是时候编写一些代码了。比如一些控制器和模板呢。
请记住, https://github.com/symfony/recipes和https://github.com/symfony/recipes-contrib的食谱存储库现在也已公开。可以随便查看。
via http://fabien.potencier.org/symfony4-demo.html
可参考 https://www.chrisyue.com/symfony-4-demo.html
原创文章:转载请注明:来自lenix的博客,网址http://blog.p2hp.com/archives/5297
最后更新于 2018年5月15日