gpt4 book ai didi

php - 在非 Symfony 项目中使用 Symfony 2 组件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:51 24 4
gpt4 key购买 nike

为了在 PHP 中获得 XLIFF/2 支持,在 another answer 中,有人建议使用 Symfony 2 翻译组件。

所以我下载了它from Github进入目录 ../vendor/ 并天真地尝试使用它:

<?php

require_once '../vendor/Symfony/Component/Translation/Translator.php';
require_once '../vendor/Symfony/Component/Translation/MessageSelector.php';
require_once '../vendor/Symfony/Component/Translation/Loader/ArrayLoader.php';

use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;

$translator = new Translator('fr_FR', new MessageSelector());

这不起作用,因为需要加载其他组件:

PHP Fatal error:  Interface 'Symfony\\Component\\Translation\\TranslatorInterface' not found in /home/ec2-user/layout/vendor/Symfony/Component/Translation/Translator.php on line 25

现在,我可以为每个文件手动添加一个require_once,直到所有满足依赖关系,但我不确定这是否是正确的方法。

如何在非 Symfony 项目中使用单个 Symfony 2 组件?那是一个坏主意?

最佳答案

使用 composer 管理您的依赖项。

首先在您的项目文件夹中创建一个 composer.json 文件:

{
"require": {
"symfony/translation": "2.4.*"
}
}

然后下载 composer 并运行它:

wget http://getcomposer.org/composer.phar
php composer.phar install

您现在可以通过导入 composer 自动加载器来使用您的组件:

<?php

require_once('vendor/autoload.php');

use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;

$translator = new Translator('fr_FR', new MessageSelector());
$translator->setFallbackLocales(array('fr'));
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array(
'Hello World!' => 'Bonjour',
), 'fr');

echo $translator->trans('Hello World!')."\n";

关于php - 在非 Symfony 项目中使用 Symfony 2 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22063982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com