Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2捆绑包及其自己的composer.json_Php_Symfony_Symfony 2.8_Composer Php - Fatal编程技术网

Php Symfony 2捆绑包及其自己的composer.json

Php Symfony 2捆绑包及其自己的composer.json,php,symfony,symfony-2.8,composer-php,Php,Symfony,Symfony 2.8,Composer Php,我正在创建一个新的Symfony 2捆绑包,我的目标是开源。它位于/src/crmpicco/ChargebeeBundle中 在该目录中,我有一个composer.json,如下所示: { "name": "crmpicco/ChargebeeBundle", "type": "library", "description": "A Symfony 2 bundle which provides an easy way to handle billing and subscript

我正在创建一个新的Symfony 2捆绑包,我的目标是开源。它位于
/src/crmpicco/ChargebeeBundle

在该目录中,我有一个
composer.json
,如下所示:

{
  "name": "crmpicco/ChargebeeBundle",
  "type": "library",
  "description": "A Symfony 2 bundle which provides an easy way to handle billing and subscriptions.",
  "keywords": [
    "crmpicco",
    "Chargebee",
    "Symfony",
    "Subscription"
  ],
  "license": "MIT",
  "authors": [
    {
      "name": "CRMPicco",
      "email": "picco@crmpicco.co.uk",
      "homepage": "http://www.crmpicco.co.uk",
      "role": "Analyst Developer"
    }
  ],
  "require": {
    "chargebee/chargebee-php": "^2.0"
  },
  "autoload": {
    "psr-0": {
      "": "src/",
      "SymfonyStandard": "app/"
    },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
  },
  "extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "symfony-assets-install": "relative"
  }
}
捆绑包需要的依赖项是
chargebee/chargebee php
,但是,当我安装
composer
composer更新时——从主Symfony项目目录中选择dist
,它不会识别此composer.json,也不会尝试下拉该依赖项


我的composer.json是否位于正确的位置,文件结构是否设置正确?

项目根
composer.json
中定义了
src
中代码的依赖项。您的
/src/crmpicco/ChargebeeBundle
中的一个将被忽略

如果要将以前的私有代码作为共享包发布,可以执行以下操作:

首先,阅读下面的文章。这将有助于以允许其他开发人员使用它的方式构建您的项目

然后,清理
composer.json
。虽然您发布的内容包含了很多需要的内容,但它也有一些不需要的值,例如这里不需要
classmap
extra
。您可能想试试这个(可以随意添加作者、关键字等):

然后,您必须决定是从私有回购还是从Github之类的东西提供捆绑,并希望它在PackageGist中注册

如果要在私人回购中使用,必须编辑全局
composer.json
,并添加以下部分:

"repositories": [
    {
        "type": "vcs",
        "url": "ssh://git@yourgitserver.example.com/path.to.repo.git" 
    }
]
如果您想将其作为正式软件包,请在那里注册一个帐户,并按照说明添加您的软件包。(别忘了设置更新挂钩。)

在这两种情况下,您现在都必须将包名添加到根
composer.json
require
部分。只要尚未在包中标记发行版,就必须将
dev master
添加为所需版本,并将行
“最小稳定性”:“dev”
添加到根
composer.json

现在,从
/src/crmpicco/ChargebeeBundle
中删除代码(或将其移到Symfony项目之外),然后运行
编写器更新--首选源代码。您现在应该可以找到在供应商下安装的捆绑包

您可能还意识到,Composer会将所有Symfony软件包更新为某些
x.x-dev
版本,这是由于“miminum stability”设置所致。顺其自然;您可以在第一次成功运行后删除“mimimum stability”行,然后再次
composer update
。然后,它将再次降级Symfony开发包,但不要使用您的包。这是一个相当奇怪的方法,但我还没有找到更好的方法。(也许其他人知道更好的处理方法。)

如果在安装时遇到问题,请仔细阅读Composer的输出并按照说明进行操作。例如,包的
composer.json
require
行中的包名可能不匹配。或者编写者可能会抱怨无法解决的依赖项,您需要修复这些依赖项


祝你好运!您可能仍然会遇到其他问题,但我建议您将它们作为单独的SO问题发布–除非它们是琐碎的,在这种情况下,欢迎您将它们作为评论发布,我将尝试回答它们和/或相应地更新此帖子。

可能不是您的问题的一部分,但是
extra
部分以及
app/
classmap
的自动加载程序可能不属于您的包,因为它们是在实际应用程序的composer.json中定义的。除此之外,您能否列出将此捆绑包添加到项目中的步骤?您的捆绑包不在PackageGist上,因此我假设您必须修改项目的composer.json以使其可访问?目前,捆绑包仅存在于我们的内部私有回购中。因此,我把它放在我的FS上,符号链接到我的SF项目中的正确位置(例如,
/src/crmpicco/ChargebeeBundle
)。我现在不希望它出现在PackageGist上,因为它是一个WIP。这没关系,但是你是如何将它符号化的?你是手工做的还是你自己做的?如果只是对其进行符号链接,composer将不会拉入包,因此不会解析包的composer.json。您基本上绕过了composer,这就是我为什么要问的原因。@dbrumann我在CLI中对它进行了符号链接,而没有使用composer,如果这是您的意思的话。i、 e
ln-s
。谢谢你的链接。你知道
“require”:{“my/package”:“*”}
指的是什么吗?考虑到我的包在PackageGist上不可用,这对我有效吗?在您的情况下,您希望使用composer.json中定义的名称,因此
crmpicco/ChargebeeBundle
。您还可以使用标志
-v
运行composer,以获得更详细的输出。这将有助于了解composer是否可以在其中找到目录和包。
"repositories": [
    {
        "type": "vcs",
        "url": "ssh://git@yourgitserver.example.com/path.to.repo.git" 
    }
]