Symfony项目:如何管理bundle / library上的更改

时间:2017-12-13 21:43:06

标签: php git symfony composer-php

我有一个symfony项目,它使用了我也完成的库。问题是我为这个项目创建了这个库,但是打算在将来重用它,所以它在一个单独的git存储库中并包含在composer.json中。

问题是,为了对这个库进行多次更改,我发现我自己更改了symfony项目的vendor目录中的库来测试它,然后复制粘贴以提交并推送库存储库。

有没有办法避免这种情况,并且能够直接更改供应商的更改并提交原始仓库?

我知道这不是任何标准的最佳实践,但实际上是一个非常小的个人项目。

提前致谢

1 个答案:

答案 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

<强>干杯!