Laravel 7 拡張機能開発チュートリアル

Guanhui
リリース: 2020-05-12 14:10:46
転載
2537 人が閲覧しました

次は、#Laravel Getting Started チュートリアル コラムで、Laravel 7 拡張機能開発チュートリアルを紹介します。

#ステップ 1. 新しいプロジェクトを作成します

Laravel インストーラーを使用することを好みます。

laravel new lara-dg
ログイン後にコピー

私はテストとパッケージ開発に SQLite を使用することを好みます。 .env ファイルを変更します:

DB_CONNECTION=sqlite
DB_DATABASE=/Users/ivan/code/packages/test-project/database/database.sqlite
ログイン後にコピー

次に、パッケージのスケルトンを作成しましょう。 CLI ツールを使用すると、必要なファイルがすべて生成されます:

composer require jeroen-g/laravel-packager
ログイン後にコピー

その後、ビルド コマンドを実行できます。 Webkid はベンダー名 (名前空間) を表し、LaravelDiagnostic はプロジェクト名を表します。

php artisan packager:new Webkid LaravelDiagnostic --i
ログイン後にコピー

次に、あなたとあなたのパッケージに関する情報を入力します。これで、次のようになります。

Laravel 7 拡張機能開発チュートリアル

コンソール出力

これで、プロジェクトにパッケージ フォルダーが作成されました。このフォルダーには、Webkid ディレクトリと必要なすべてのドキュメントが含まれています。 。

このパッケージは、composer を通じて自動的にロードされます。私は相対パスを使用することを好みます:

"repositories": {
    "webkid/laraveldiagnostic": {
        "type": "path",
        "url": "../../packages/lara-dg/packages/Webkid/LaravelDiagnostic"
    }
}
ログイン後にコピー
ログイン後にコピー

また、require セクションが自動的に更新されない場合は、手動で更新してください。ベンダー ディレクトリ内のパッケージ ディレクトリへのシンボリック リンクが作成されます。

"require": {
    "webkid/laraveldiagnostic": "*"
},
ログイン後にコピー

これで、src フォルダーにクラスを作成できますが、適切な名前空間 Webkid\LaravelDiagnostic が必要です。

たとえば、RunDiagnostic.php クラスを含む Commands ディレクトリがあります。ファイル。したがって、次のような名前空間を持つ必要があります:

namespace Webkid\LaravelDiagnostic\Commands;
ログイン後にコピー

マイグレーション、ルート、構成ファイル、ビュー、さらにはリソース ファイル (js、CSS、画像) を使用したい場合は、それらをサービス プロバイダーにロードする必要があります。 。それについては公式ドキュメントで学ぶことができます。この例ではコマンドを使用しただけです。 LaravelDiagnosticServiceProvider の bootForConsole() メソッドを見てください:

public function bootForConsole()
{
    if ($this->app->runningInConsole()) {
        $this->commands([
            RunDiagnostic::class
        ]);
    }
}
ログイン後にコピー

初めてパッケージを構築しようとしたときに問題に遭遇したので、私の個人的な経験を共有したいと思いました。私はすべての PHP クラスを src フォルダーに配置し、他のファイルはすべて外部に配置することを好みます。例:

assets - すべての CSS、js、画像ファイルの保存に使用されます

config - すべての設定ファイルの保存に使用されます

migrations - すべての移行ファイルの保存に使用されます

resources — すべてのビュー ファイル、lang ファイルなどの保存に使用されます。

src — サービス プロバイダーを含むすべての PHP クラスの保存に使用されます

他のソフトウェアを参照する必要がある場合パッケージを追加するには、パッケージ内のcomposer.jsonファイルを編集する必要があります。

"require": {
    "cviebrock/eloquent-sluggable": "^4.3"
}
ログイン後にコピー

さらに役立つヒント: 変更されたリソースを同時にテストする必要がある場合、シンボリックリンクを使用すると、ベンダーのリリースを常に繰り返すことを避けることができます。ファイルをコピーする代わりにシンボリック リンクを作成します。このトリックにより、時間を大幅に節約できます

ln -s /path/to/your/project/webkid-cms/packages/webkid/cms/assets /path/to/your/project/webkid-cms/ public/vendor/cms

次に、Composer のオートローダーを更新して新しいファイルを追加します。

composer dump-autoload
ログイン後にコピー

ステップ 2. プロジェクトを GitHub に配置します#コード ベースの準備ができたら、パッケージ ディレクトリに移動して Git リポジトリを初期化できます。

cd packages/Webkid/LaravelDiagnostic
git init
git add .
git commit -m "first commit"
ログイン後にコピー

新しい GitHub リポジトリを作成し、オリジンを追加します。

git remote add origin git@github.com:yourusername/yourrepository.git
git push -u origin master
git tag -a 1.0.0 -m "release: First version"
git push --tags
ログイン後にコピー

ステップ 3. プロジェクトを Packagist に配置します

まず、Packagist .org Web サイトに配置します。登録。 GitHub アカウントを使用してサインアップすることを好みます。

次に、この URL を使用して新しいパッケージを送信します。パッケージの GitHub URL を入力して [確認] をクリックします。エラーが発生した場合は、画面の指示に従ってください。

前の手順を完了すると、パッケージの packageist ページにリダイレクトされ、次の通知が表示される場合があります:

このパッケージは自動的には更新されません。 Packagist 用の GitHub サービス フックをセットアップして、プッシュするたびに更新してください。

設定してみましょう。このページで API トークンを取得し、パッケージの GitHub ページにアクセスして、設定 / Webhook とサービス / 新しいサービスの追加 インターフェイスを見つけます。 Packagist を検索し、名前とトークンを入力して、[送信] をクリックします。 Packagist ページに表示されるエラーは 5 ~ 10 分以内に消えるはずです。

おめでとうございます。有効なパッケージがオンラインにあり、composer を通じてそれを参照できるようになりました。

ステップ 5. パッケージ フォルダーで続行します。

このソフトウェア パッケージを開発する唯一の目的がソフトウェア パッケージの開発を支援することである場合、このパッケージの開発は終了しています。 。

ただし、より大きなプロジェクトでパッケージを開発し、それが必要になった場合は、コードをパッケージ フォルダーに保存して使用できます。

作業が完了したら、composer.json ファイル

"repositories": {
    "webkid/laraveldiagnostic": {
        "type": "path",
        "url": "../../packages/lara-dg/packages/Webkid/LaravelDiagnostic"
    }
}
ログイン後にコピー
ログイン後にコピー

からこのコードを削除し、packagist からパッケージをプルできます。 ######読んでくれてありがとう。この記事が皆さんのお役に立てば幸いです。

オープンソースに貢献しましょう!

推奨チュートリアル: 「

Laravel

以上がLaravel 7 拡張機能開発チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!