1. ホーム
  2. php

[解決済み] symfony2 - 独自のベンダーバンドルを作成する - プロジェクトとgit戦略

2023-08-24 10:57:20

質問

私たちは、独自の common バンドルを作成することを検討しています。バンドルは、変更、実行、インクルード、およびテストが簡単であるべきです。私が知っているのは バンドルを構造化するためのベストプラクティス については知っていますが git を使うべきかがわかりません。

を作るべきでしょうか? common バンドルをプロジェクトとして作成し、リポジトリ全体を git サーバーにコミットすべきなのか、それとも common のルートに対してのみソース管理を開始し、その内容のみをプッシュする方が良いでしょうか?私は、このアプローチは github にあるバンドルでこの方法を見かけますが、私はそのような方法でバンドルを開発する簡単で快適な方法を知りません。

どのように解決するのですか?

新しい空のsymfonyプロジェクトを作成する

php composer.phar create-project symfony/framework-standard-edition demo/ 2.4.1
cd demo

新しいバンドルを生成する

(例えば src/Company/DemoBundle )

php app/console generate:bundle
cd src/Company/DemoBundle/

github リポジトリを src/Company/DemoBundle

git init
touch README.md
git add .
git commit -m "initial commit"
git remote add origin https://github.com/YourAccount/DemoBundle.git
git push -u origin master

composer.jsonファイルを追加する

src/Company/DemoBundle/composer.json :

{
    "name" : "company/demobundle",
    "description" : "A demo bundle",
    "type" : "symfony-bundle",
    "authors" : [{
        "name" : "demo",
        "email" : "[email protected]"
    }],
    "keywords" : [
        "demo bundle"
    ],
    "license" : [
        "MIT"
    ],
    "require" : {
    },
    "autoload" : {
        "psr-0" : {
            "Company\\DemoBundle" : ""
        }
    },
    "target-dir" : "Company/DemoBundle",
    "repositories" : [{
    }],
    "extra" : {
    "branch-alias" : {
            "dev-master" : "some_version-dev"
        }
    }
}

これでバンドルの基本構造ができました。

別のプロジェクトで使用する

composer.jsonを使用します。

    [...]
    "require" : {
        [...]
        "company/demobundle" : "dev-master"
    },
    "repositories" : [{
        "type" : "vcs",
        "url" : "https://github.com/Company/DemoBundle.git"
    }],
    [...]

してください。

curl -sS https://getcomposer.org/installer | php
php composer.phar update company/demobundle

app/AppKernelです。

new Company\DemoBundle\CompanyDemoBundle(),

作業する

  • DemoBundle をクローンするのは src/Company フォルダーにクローンし、手動でインストールします。
  • シンボリックリンクを使用することができます

結論

1つ目のプロジェクトでバンドルを開発・テストし、2つ目のプロジェクトでgithubやcomposerを使って利用することができます。