首先,我不能使用作曲家因为我在公司网络下。我尝试了一切让作曲家工作:
SSL:握手超时。
但那不是我的问题,我花了很多时间试图让作曲家工作(但如果你有一个解决方案,你就可以度过我的一天)
我的真正问题如下:如何手动安装捆绑包
我想安装此捆绑包:http://knpbundles.com/pierredup/MenuBundle。
我尝试安装捆绑包的方法:
new \CS\MenuBundle\CSMenuBundle()
$loader->add('CS', __ DIR __.'/../vendor/CS/CSMenuBundle.php');
(不知道如何正确添加php代码......)
但它不起作用,得到以下错误:
尝试从命名空间“CS \ MenuBundle”加载类“CSMenuBundle”。 您是否忘记了另一个命名空间的“use”语句?
然后,即使这不是一个好习惯,我也尝试将其添加到autoload_namespaces.php并在此之后进行转储自动加载:
'CS \ MenuBundle'=>数组($ vendorDir。'/ CS /')
我仍然有错误,但不完全相同:
尝试从命名空间“CS \ MenuBundle”加载类“CSMenuBundle”。 您是否忘记了“CS \ MenuBundle \ CSMenuBundle”的“使用”声明?
现在我有点沮丧,我看到很多帖子(不在Stack上)人们尖叫,因为我们必须使用composer来管理依赖项。我完全同意这一点,但我不能,所以我试图找到另一种方式,因为我找不到任何明确的教程解释如何安装没有作曲家的供应商,我在这里。
答案 0 :(得分:1)
请注意,我直接评论了您在问题上看到的问题。
但是,我查看了您要使用的软件包,看看是否有机会以某种方式安装它(更喜欢Composer)。我认为这不可行或不可行。
composer require customscripts/menubundle:dev-master
- 这将是Composer完成所有操作的简单命令。但是有问题:
您要使用的软件包未在packagist.org上注册,因此无法在正确连接到Internet的计算机上使用Composer,抓取软件包,将其压缩并传输到该位置你需要它。
要解决此问题,您需要手动将存储库添加到composer.json
文件中 - 这可能实际上有效(但在我的VM上需要花费太多时间)。您最终会得到2012年最后一次编辑的代码!
该代码的依赖关系可能不再适用。该软件包的composer.json
列出"require": {"knplabs/knp-menu-bundle": "dev-master", "symfony/framework-bundle": ">=2.0,<2.3-dev", "jms/di-extra-bundle": "1.1.*"}
- 即使是第一个&#34; knplabs / knp-menu-bundle&#34;永远不会工作。请记住,这个包的代码是从2012年开始的 - 现在我们是在2016年,所以&#34; knp-menu-bundle&#34;已经在主分公司看到了四年的发展。根本不知道对这个包使用了哪个提交。您必须对丢失的信息进行逆向工程。
此外,您还可以看到为什么Composer很棒并且手动操作很糟糕:除了您希望的包之外,您还必须下载此处提到的三个附加包。
但是检测必须添加的包是一个递归任务:knp-menu-bundle依赖于knp-menu(没有进一步的依赖)和symfony / framework-bundle(已经添加)。 symfony / framework-bundle本身依赖于9个Symfony包和doctrine / common ...等等。如果您不能使用Composer,则必须检测每个包的这个并手动下载正确的版本。
在我输入答案时,由于安装没有完成,因此我正在跳过原始软件包,我尝试安装knp-menu-bundle以查看将安装多少软件包。 Composer安装了20个软件包,其中一些在2.8中使用Symfony(它应该与Symfony 2.2兼容,不应该这样) - 我只是运行composer require knplabs/knp-menu-bundle:1.1.1
来获取类似旧版本的knp-menu-从2012年开始捆绑。
使用Composer的优势在于它支持快速开发,允许快速更新,可靠地降级(如果您提交composer.lock
文件并始终使用标记版本),并且只是允许立即添加新包。作为PHP开发人员,无法使用Composer是一个非常严重的限制。通过HTTPS代理与您的老板或团队负责人讨论您公司的情况,并找到使用Composer的解决方案。另一种方法是自己开发所有东西,或浪费大量时间试图摆弄不易搭配的手动下载。