Fra*_*ste 4 php autoload silex composer-php
我的专业网络阻止了Internet访问。一个月前,我从存档文件(包含composer.json文件)和composer.phar文件中下载了Silex框架,然后将它们通过HDD传输到桌面上。
我自定义的composer.json:
{
"name": "user/silex",
"require": {
"silex/silex": "1.2"
, "twig/twig": ">=1.8,<2.0-dev"
, "doctrine/dbal": "2.2.*"
, "symfony/security": "~2.3"
, "symfony/security": "~2.3"
},
"autoload": {
"psr-4": {
"Portal\\": "src/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,我的自动加载自定义也是如此。
今天,我想添加该monolog/monolog程序包,因此我从另一台计算机手动导入了该程序包。
我将其放置在我的供应商文件夹中,将以下行添加到我的composer.json文件中:
, "monolog/monolog": ">=1.0.0"
Run Code Online (Sandbox Code Playgroud)
我在控制台上运行:
php composer.phar dumpautoload
Run Code Online (Sandbox Code Playgroud)
它输出:生成自动加载文件
然后它停止,没有错误,但是monolog名称空间没有出现在我的/vendor/composer/autoload_*.php文件中。
我错过了什么?
感谢edmondscommerce的评论,我找到了解决方案:
我使用工件存储库更新了我的主要composer.json文件(并禁用了打包程序):
{
"name": "user/silex",
"repositories": [
{
"type": "artifact",
"url": "artifact/"
}, {
"packagist": false
}
], "require": {
"silex/silex": "1.2"
, "twig/twig": ">=1.8,<2.0-dev"
, "monolog/monolog": "1.*"
, "doctrine/dbal": "2.2.*"
, "symfony/security": "~2.3"
},
"autoload": {
"psr-4": {
"Portal\\": "src/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,artifact根据composer.json文件中的url 放置一个名为的文件夹。
我在该文件夹中创建一个名为monolog-monolog-1.8.zip的zip文件,其中包含我要添加的库。
然后只需启动一个composer update命令!
请注意,zip的根目录必须包含composer.json文件,并且此composer.json文件必须包含版本!