我有一个symfony项目,它使用了我也完成的库。问题是我为这个项目创建了这个库,但是打算在将来重用它,所以它在一个单独的git存储库中并包含在composer.json中。
问题是,为了对这个库进行多次更改,我发现我自己更改了symfony项目的vendor目录中的库来测试它,然后复制粘贴以提交并推送库存储库。
有没有办法避免这种情况,并且能够直接更改供应商的更改并提交原始仓库?
我知道这不是任何标准的最佳实践,但实际上是一个非常小的个人项目。
提前致谢
答案 0 :(得分:0)
为自己的vendorname改变Fbeen!
在symfony项目目录中创建一个文件夹,其中只包含任何名称,例如: library
。
在该文件夹中创建一个目录src
。
在src
目录中创建新类,例如
# library/src/MyLibrary.php
namespace Fbeen\MyLibrary;
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 AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$lib = new \Fbeen\MyLibrary\MyLibrary();
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 repo
在library
目录
git init
git remote add https://github.com/Fbeen/MyLibrary
git commit -m "initial commit"
git push origin master
转到link提交新的存储库。
在您的(下一个)项目中,使用composer安装repo:
composer require fbeen/MyLibrary
<强>干杯!强>