gpt4 book ai didi

symfony2.1 捆绑版本混淆,用于 symfony 和奏鸣曲 admin/knp 菜单捆绑

转载 作者:行者123 更新时间:2023-12-04 14:47:42 24 4
gpt4 key购买 nike

我想在一个新项目中使用 symfony2.1。我尝试用 composer 安装 symfony2。
但是有多个错误/问题,所以我对 中的每个问题也有疑问。粗体样式 .
有时我不知道我的做法是否正确。

我想使用稳定版本,所以我选择了 2.1.0 版本而不是 dev/master。

php composer.phar create-project symfony/framework-standard-edition symfony v2.1.0

结果是这样的:
Installing symfony/framework-standard-edition (v2.1.0)
- Installing symfony/framework-standard-edition (v2.1.0)
Downloading: 100%

Created project in symfony
Loading composer repositories with package information
Installing dependencies from lock file
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for symfony/symfony == 2.1.9999999.9999999-dev -> satisfiable by symfony/symfony 2.1.x-dev.
- Can only install one of: symfony/symfony dev-master, symfony/symfony 2.1.x-dev.
- Installation request for symfony/symfony == 9999999-dev -> satisfiable by symfony/sym fony dev-master.

所以我做了一个 php composer.phar update并且依赖项安装没有错误。

但我注意到大多数捆绑包都没有稳定版本。例如doctrine/common (2.3.x-dev),这里是完整列表
Loading composer repositories with package information
Updating dependencies
- Installing doctrine/common (2.3.x-dev 605b1b8)
Cloning 605b1b8b5a7bc8daf9111fb35483e5708e30de35

- Installing doctrine/dbal (2.3.x-dev 239630b)
Cloning 239630b61f03f39d198441eced1bfffb7b0e61d1

- Installing twig/twig (dev-master 68b8c46)
Cloning 68b8c4619c5bbe82bd345fe56070dec8c356610a

- Installing symfony/symfony (2.1.x-dev e7059b4)
Cloning e7059b44c78ca8e1e892adb4d93b5a482f4eb9b3

- Installing swiftmailer/swiftmailer (dev-master e12e4ef)
Cloning e12e4ef3a9d6dd60fb734a01984a6e6627aea764

- Installing doctrine/orm (2.3.x-dev 4d9f24b)
Cloning 4d9f24b2eef3af3a3e76c773994c19bbb0706f88

- Installing doctrine/doctrine-bundle (dev-master v1.0.0)
Cloning v1.0.0

- Installing twig/extensions (dev-master f904575)
Cloning f904575642b1213db69b4a98f08397e722ba1cae

- Installing kriswallsmith/assetic (dev-master dfbb776)
Cloning dfbb776288baf9319d1693195af2cb6e00729901

- Installing symfony/assetic-bundle (dev-master 4e7e8a0)
Cloning 4e7e8a039fa19434f04558473adbb201118af942

- Installing symfony/swiftmailer-bundle (dev-master d2eae93)
Cloning d2eae9385c029cbac031a90e6d2abc74b889a562

- Installing monolog/monolog (dev-master a929570)
Cloning a929570bb7688b39fefe4106f0ecf0ac35f37647

- Installing symfony/monolog-bundle (dev-master v2.1.0-RC2)
Cloning v2.1.0-RC2

- Installing sensio/distribution-bundle (dev-master 9892129)
Cloning 98921298951598e8707258cba2b6180b96faa91c

- Installing sensio/framework-extra-bundle (dev-master v2.1.0)
Cloning v2.1.0

- Installing sensio/generator-bundle (dev-master v2.1.0-RC2)
Cloning v2.1.0-RC2

- Installing jms/metadata (1.1.1)
Downloading: 100%

- Installing jms/cg (1.0.0)
Downloading: 100%

- Installing jms/aop-bundle (1.0.0)
Downloading: 100%

- Installing jms/di-extra-bundle (1.1.x-dev af21952)
Cloning af219527024c584d7311aa855d7522429c5bdb67

- Installing jms/security-extra-bundle (1.2.x-dev 9ab6ace)
Cloning 9ab6aceda50fc7a2b07d741ba4b3f0695508afcb

1a) 这是对的吗?或者还有其他解决方案吗?我的意思是使用稳定且不在开发模式下的包

第二天,我再次进行了 Composer 更新,并注意到一些库已更新:dev-master 分支的所有库在最后一天都有新的更改。
1b) 所以我应该在开发我的应用程序时定期更新 Composer ,合并新的错误修复等?
$ php composer.phar update
Loading composer repositories with package information
Updating dependencies
- Updating swiftmailer/swiftmailer dev-master (e12e4e => c97353)
Checking out c97353b1ebffe25a224146f69d17efe24c093def

- Updating monolog/monolog dev-master (a92957 => e5bf7b)
Checking out e5bf7ba5d1df622b68d004b3c0277bc94286e1b7

- Updating friendsofsymfony/user-bundle dev-master (24edb2 => 878b7c)
Checking out 878b7c8320159fb09e8e94d446c498b00142b206

- Updating sonata-project/notification-bundle dev-master (5e7b50 => 9cef7d)
Checking out 9cef7d224f224b4e4327f200f9bd57b798d4ab0a

- Updating knplabs/gaufrette dev-master (861110 => 5ac439)
Checking out 5ac439cd46eb461043e6bb73dae717528f674a57

- Updating sonata-project/media-bundle dev-master (d04a61 => 233511)
Checking out 2335114dab6ea9680d174df157f5a7b4551a54dc

因为我没有找到另一个解决方案,所以我继续并通过添加这一行来安装 FOS UserBundle "friendsofsymfony/user-bundle": "*"到 composer.json。
我做整个安装的东西,它完美地工作。

然后我通过添加 "sonata-project/admin-bundle": "dev-master" 开始安装 Sonata AdminBundle到 composer.json。我选择了 dev-master 版本,因为在 http://packagist.org/packages/sonata-project/admin-bundle我发现 2.0.x-dev 版本不适用于 symfony2.1。
此外,AdminBundle 具有 knplas/knp-menu-bundle 的依赖关系:1.1.*
http://packagist.org/packages/knplabs/knp-menu-bundle我看到版本 v1.1.0 有 knplas/knp-menu 的另一个依赖项:1.1.*
然后在 http://packagist.org/packages/knplabs/knp-menu我发现了 4 个以 1.1 开头的版本:
  • 1.1.x-dev
  • v1.1.2
  • v1.1.1
  • v1.1.0

  • 2a) 如果有领先的 v 是否有区别在版本号之前?

    2b) 当依赖为 1.1* 时,将使用这四个版本中的哪个版本?

    当我开始加载管理包 deps 时,我看到了结果:
    $ php composer.phar update
    Loading composer repositories with package information
    Updating dependencies
    - Installing knplabs/knp-menu (1.1.x-dev v1.1.2)
    Cloning v1.1.2

    - Installing knplabs/knp-menu-bundle (v1.1.0)
    Downloading: 100%

    - Installing sonata-project/admin-bundle (dev-master 20d5e4a)
    Cloning 20d5e4a659bddb5fc0bcfc4755643dbc4e3f7ec1

    我安装了更多的奏鸣曲包(doctrine-orm-admin-bundle、user-bundle、page-bundle、media-bundle),但出现错误
      - Installing imagine/imagine (v0.3.0)
    Downloading: 100%



    [ErrorException]
    rename(C:\wamp\www\symfony\vendor/imagine/Imagine/avalanche123-Imagine-a23b4f5,afcc946468d0cf073686fe7e1ae19eb2): access denied
    (code: 5)

    3)但是当我重复该步骤时,错误消失了。这是正常的吗?
    $ php composer.phar update
    Loading composer repositories with package information
    Updating dependencies
    - Installing imagine/imagine (v0.3.0)
    Downloading: 100%

    - Installing knplabs/gaufrette (dev-master 8611109)
    Cloning 8611109aeb0bd43fd88485c20fec7fc85b021b84

    - Installing sonata-project/media-bundle (dev-master d04a617)
    Cloning d04a617d81383a6e1ba65ee99c2ea4379e7daf4e

    然后我继续配置sonata admin bundle。在我添加了一个创建 Post 实体和一个 PostAdmin 并为其配置了一个服务后(顺便说一句:服务配置有点差),注意到我忘记安装 Knp Menu(错误是: non-existent service "knp_menu.factory)

    我继续 https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md并查看安装说明的详细信息。屁股那里已经过时了。从 smyfony2.1 开始。 $loader在 autoload.php 中没有 registerNamespaces不再起作用,因为这不是 UniversalClassLoader 类,它是 Composer 类加载器。所以我必须创建一个自己的 UniversalClassLoader 实例。路径完全不同,现在有一个父级 knplabs目录和子目录也发生了变化。
    use Symfony\Component\ClassLoader\UniversalClassLoader;
    use Doctrine\Common\Annotations\AnnotationRegistry;

    $loader = require __DIR__.'/../vendor/autoload.php';

    // intl
    if (!function_exists('intl_get_error_code')) {
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
    }

    $universalLoader = new UniversalClassLoader();
    $universalLoader->registerNamespaces(array(
    'Knp\Menu' => __DIR__.'../vendor/knplabs/knp-menu/src',
    'Knp\Bundle' => __DIR__.'/../vendor/knplabs/knp-menu-bundle'
    ));
    $universalLoader->register();


    AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

    return $loader;

    4) 为什么 KnpMenu 安装结构已经过时,为什么 github 上只有一个 master 分支而 http://packagist.org 上存在的版本没有任何内容?

    我是 symfony2 和 composer 的新手,有时真的很难理解这一切。

    最佳答案

    1a) Is this right? Or is there another solution? I mean to use bundles which are stable and not in dev mode



    Symfony21 将标准为您选择最佳版本。您可以在 composer.json 中看到这些版本。 symfony/framework-standard-edition 的文件包( symfony/symfony-standard 在 github 上)。

    如您所见,它使用 2.1.*版本而不是 dev-master版本,但因为最新版本的包以 2.1 开头它将加载 dev-master .后来,对于 symfony2.2,它不应该使用 dev-master ,但最新的 2.1包的版本。

    如果你想要一个静态版本,你可以替换 *使用您想要的颠覆,但我不推荐这样做,因为您没有得到错误修复。

    1b) So I should do a composer update in regular intervals while developing my app, to merge new bugfixes, etc?



    是的,不时更新您的依赖项是很好的。例如,如果您认为您发现了一个错误,或者您将其推送到 production .

    2a) Is there a difference if there is a leading v before the version number?



    正如我们在 the packagist documentation 中所读到的那样(在管理包版本下)没有区别。你可以同时使用它们,如果你使用 2.1.4它将寻找 2.1.4版本或 v2.1.4 .

    2b) Which version will be used of these four, when the dependency is 1.1.* ?



    最新 1.1颠覆。例如,如果您 foobar包有这些版本:1.1.1、1.1.2 .. 1.1.6。
    而您需要 1.1.*将安装最新的 ( 1.1.6 )。

    3) but when I repeat the step the error was gone. Is this normal?



    看起来 CLI 无法访问该文件,您可能在程序中打开了它。当您第二次尝试它时,它可以访问。

    4) Why is the KnpMenu install construction outdated and why there is only a master branch on github and nothing for the versions which exist on http://packagist.org?



    第一个问题:我不知道为什么文档已经过时了。您应该进入 vendor/composer/autoload_namespaces.php文件并将命名空间放在那里,然后它应该可以工作。或者,更好的选择是将这些命名空间添加到 require composer.json 中的设置文件。见 composer autoload docs想要查询更多的信息。

    第二个问题:它使用 tags github上也有。

    关于symfony2.1 捆绑版本混淆,用于 symfony 和奏鸣曲 admin/knp 菜单捆绑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338982/

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