Bermula
Membuat pakej PHP baru memerlukan tugas -tugas berikut:
composer.json
Perintah
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
akan membimbing anda untuk menubuhkan projek secara interaktif, menetapkan nama pakej, penulis, lesen, dan lain -lain. Nilai, dan cari kebergantungan pakej. Anda boleh mengisi maklumat ini seperti yang anda suka, tetapi demi keringkasan, di sinilah kita mula: composer init
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
Apabila anda sudah bersedia untuk menyambungkan checkout tempatan anda ke sistem kawalan versi seperti GitHub, anda boleh mengikuti arahan untuk menambah repositori jauh. Ia mungkin sama dengan arahan berikut:
git remote add origin git@github.com:laravelnews/example-package.git
atau composer.json
. Komposer tidak peduli jalan yang anda gunakan, tetapi anda perlu mengarahkan komposer untuk memuatkan fail secara automatik menggunakan PSR-4. Mari gunakan folder src/
dan buat kelas untuk pakej sampel kami: lib/
src
$ mkdir src/ $ touch src/Api.php
untuk mengkonfigurasi autoloader: composer.json
"autoload"
Ciri -ciri dalam peta utama
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {}, "autoload": { "psr-4": { "LaravelNews\Feed\": "src/" } } }
, mereka dipetakan ke ruang nama autoload.psr-4
. Untuk contoh ini, kami membuat fail src
yang meminta dan mengembalikan suapan JSON Berita Laravel. Jika anda belajar, tambahkan kod berikut ke LaravelNewsFeed
: Api.php
src/Api.php
<?php namespace LaravelNews\Feed; class Api { public function json(): array { $json = file_get_contents('https://laravel-news.com/feed/json'); return json_decode($json, true); } }
Terdapat beberapa cara, seperti memerlukan pakej ini dalam projek lain melalui pergantungan komposer tempatan, dan juga menolak kod untuk GitHub dan melaksanakan dev-main
pada pakej kami. Walau bagaimanapun, kita juga boleh mencubanya dengan membuat fail composer update
dalam direktori root projek: index.php
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
: composer install
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
selepas menambah ruang nama ke composer.json
untuk mengemas kini autoloader komposer. dump-autoload
membolehkan kami dengan cepat mula menggunakan pakej kami, bagaimanapun, kami juga boleh mula menggunakan kod kami dengan membuat suite ujian. Mari menggali bagaimana untuk menetapkannya! index.php
Pakej komposer
mempunyai dua set keperluan: bahagian mengandungi pakej yang diperlukan untuk pakej yang dijalankan, dan bahagian require
mengandungi pakej yang diperlukan untuk ujian. Setakat ini kami tidak mempunyai pakej require-dev
, yang boleh berlaku jika anda tidak memerlukan kebergantungan pakej lain. require
git remote add origin git@github.com:laravelnews/example-package.git
untuk mengekalkan kebergantungan yang dianjurkan: composer.json
$ mkdir src/ $ touch src/Api.php
. Selepas membuat fail, kami boleh menjalankan --init
untuk menguji kod kami: pest
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {}, "autoload": { "psr-4": { "LaravelNews\Feed\": "src/" } } }
Seterusnya, mari buat kelas mudah yang boleh kita gunakan untuk menunjukkan ujian pakej. Kelas ini akan mendapat artikel terkini dari Laravel News Json Feed dan kembali ke artikel terkini.
kami menamakan kelas fiksyen ini
dan menambahkannya ke fail NewsChecker
dengan kandungan berikut: src/NewsChecker.php
<?php namespace LaravelNews\Feed; class Api { public function json(): array { $json = file_get_contents('https://laravel-news.com/feed/json'); return json_decode($json, true); } }
sebagai kebergantungan dan kami akan mengejeknya dalam ujian kami. Api
dan menambah ujian berikut untuk mengesahkan kaedah tests/Feature/NewsCheckerTest.php
: latestArticle()
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
anda boleh menjalankan ujian ini dan mengesahkan bahawa kod itu sah dengan menjalankan vendor/bin/pest
. Anda boleh memadam ujian sampel yang dibuat selepas berjalan pest --init
seperti yang anda suka.
Kami telah meliputi banyak perkara, dari memulakan repositori Git, mengkonfigurasi pakej PHP dengan composer.json
, menambah kod sumber dan ujian, dan menjalankannya dengan perosak. Dari sini, anda boleh menyiarkan pakej anda di Packagist!
Saya cadangkan anda mendaftar dan lihat dokumentasi di Packagist.org di mana anda akan melepaskan versi baru pakej. Proses mengemas kini versi pakej pada pembungkus boleh automatik, yang bermaksud bahawa apabila anda menandakan versi baru pakej, mereka akan muncul secara automatik di packagist.org.
Kami telah belajar langkah demi langkah untuk membuat pakej dari awal, tetapi jika anda menggunakan GitHub, mewujudkan repositori templat untuk organisasi atau projek peribadi anda boleh dilakukan dengan lebih cepat! Terdapat beberapa rangka kerja pakej bintang komuniti yang boleh digunakan sebagai titik permulaan untuk pakej komposer seterusnya:
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
Atas ialah kandungan terperinci Cara Membina Pakej PHP Pertama Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!