如何使用解耦的 symfony 组件?

Posted

技术标签:

【中文标题】如何使用解耦的 symfony 组件?【英文标题】:How to use the decoupled symfony components? 【发布时间】:2011-12-12 00:11:28 【问题描述】:

关于如何使用 symfony 的解耦组件的任何信息?

我正在重读文档,但除了 “它们非常非常解耦”的一般信息以及 makes use of Request and Response 的 1 个教程之外,没有关于该主题的任何内容。

还有一个排名很差的答案Using symfony2 routing component (outside of symfony2)

同时查看tutorial for the standalone Form component 并没有让我感到多么愉快。

我需要 routingyamlsession

【问题讨论】:

【参考方案1】:

您应该使用的第一个组件是 ClassLoader。你也可以使用 spl_autoload_register,但是你使用的是 Symfony,那么为什么不使用它自己的自动加载库呢?在脚本顶部添加以下内容:

use Symfony\Component\ClassLoader\UniversalClassLoader;

require_once '/path/to/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';

$loader = new UniversalClassLoader();
$loader->register();

$loader->registerNamespaces(array(
    'Symfony' => '/path/to/symfony/src',
));

使用 Yaml 组件非常简单:

use Symfony\Component\Yaml\Parser;
$data = Parser::parse('yaml string');

对于其他组件,您必须阅读API documentation,因为还没有教程。

【讨论】:

实际上,指向 API 文档的链接并不是很有帮助。我看到的问题是所有组件都使用至少 2 个其他组件。所以他们几乎与他们联系在一起。 YAML 组件本身很容易解耦,因为 sf1.我需要使用 YAML 进行路由配置,而不仅仅是 YAML。 看起来这个例子中使用了旧版本的 Symfony。它不起作用并给出 PHP 错误。【参考方案2】:

有趣的是,Fabien Potencier 刚刚发表了一篇博文,其中包含如何使用最常用组件的 sn-ps。详情见this post后半部分。

【讨论】:

我刚刚added a comment。我希望我们能得到更多独立的例子。【参考方案3】:

我已经写了一个教程,可以帮助你使用decoupled Symfony components in your project。

以控制台组件为例,其他组件的逻辑相同。

【讨论】:

【参考方案4】:

作曲家就是答案。

此视频http://www.youtube.com/watch?v=QOldVDVYnAE 有一个简单直接的步骤,可以回答您的问题。

2020 年 8 月 26 日编辑:视频创作者已将其设为私有。抱歉,我无能为力。

【讨论】:

这是安装,不是使用。 @antitoxic 如果您对安装步骤不感兴趣,请从 7:12 开始观看。虽然我强烈建议你观看整个系列。 此视频是私人视频:O【参考方案5】:

Symfony2 示例

1) 在新文件夹中使用 composer 安装你需要的组件

composer require symfony/yaml

2) 创建脚本yaml.php

<?php
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\Yaml\Parser;
$yaml = new Parser();
$value = $yaml->parse('invoice: 3484');
var_dump($value);

3) 运行脚本

php yaml.php

【讨论】:

以上是关于如何使用解耦的 symfony 组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Symfony2 路由组件将路由与控制器绑定

如何使用 Symfony Mailer 组件禁用“verify_peer”?

Symfony - 如何覆盖不在捆绑包中的供应商组件

在 React Redux 中如何构建应用程序以将组件与状态原子解耦

创建一个只使用 Symfony2 的控制台组件的项目

如何关闭 symfony messenger 组件的日志记录