我有一个Symfony项目,它使用了一个我也做过的库。问题是这个库是我为这个项目制作的,但我打算在未来重用它,所以它在一个单独的git存储库中,并包含在composer.json中。
问题是,为了对这个库进行多次更改,我发现我自己更改了Symfony项目的供应商目录中的库来测试它,然后复制粘贴以提交并推送到库存储库。
是否有任何方法可以避免这种情况,并能够直接更改供应商的变更并承诺原始回购?
我知道无论以何种标准衡量,这都不是一个最佳实践,但实际上是一个非常小的个人项目。
将Fbeen更改为您自己的供应商名称
在symfony项目目录中创建一个文件夹,只使用任何名称,例如library
。
在该文件夹中创建目录CCD_ 2。
在src
目录中创建新类,例如
# library/src/MyLibrary.php
namespace FbeenMyLibrary;
class MyLibrary
{
public function returnSomething()
{
return 'Hi Folks';
}
}
打开/web/app_dev.php文件并添加第二行:
require __DIR__.'/../vendor/autoload.php'; // AFTER THIS LINE
require __DIR__.'/../library/src/MyLibrary.php'; // ADD THIS
现在你将能够在你的应用程序中使用库,例如从你的控制器:
namespace AppBundleController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$lib = new FbeenMyLibraryMyLibrary();
return $this->render('default/index.html.twig', [
'something' => $lib->returnSomething(),
]);
}
}
现在在library
目录中添加一个新的composer.json文件:
# library/composer.json (remove this line)
{
"name" : "fbeen/mylibrary",
"description" : "This bundle is just a test",
"type" : "library",
"authors" : [{
"name" : "Frank Beentjes",
"email" : "xxxx@gmail.com"
}],
"keywords" : [
"Test"
],
"license" : [
"MIT"
],
"require" : {
"php": ">=5.5.0"
},
"autoload" : {
"psr-4" : {
"Fbeen\MyLibrary\" : "src/"
}
}
}
在CLI上或使用您喜欢的GIT工具初始化一个新的GIT-reo在library
目录中
git init
git remote add https://github.com/Fbeen/MyLibrary
git commit -m "initial commit"
git push origin master
访问packagist.org提交您的新存储库。
在您的(下一个)项目中,使用composer:安装repo
composer require fbeen/MyLibrary
干杯