Rumah > pembangunan bahagian belakang > tutorial php > Cara Membina Pakej PHP Pertama Anda

Cara Membina Pakej PHP Pertama Anda

Karen Carpenter
Lepaskan: 2025-03-06 01:38:08
asal
589 orang telah melayarinya

How to  Build Your First PHP Package

Ingin membuat pakej PHP dari awal dan berkongsi dengan pemaju PHP yang lain? Komposer, alat pengurusan ketergantungan ini, menjadikan proses ini mudah! Terima kasih kepada komposer, PHP mempunyai salah satu ekosistem pakej teratas. Mari kita lihat lebih mendalam bagaimana untuk membuat pakej PHP langkah demi langkah.

Bermula


Artikel ini terutama ditujukan kepada pemula PHP Newbies (atau pemula penulisan pakej PHP), dan bertujuan untuk membantu mereka belajar bagaimana membuat pakej PHP dari awal.

Membuat pakej PHP baru memerlukan tugas -tugas berikut:

    Mulakan repositori git
  • Buat dan konfigurasikan
  • fail composer.json
  • Memasang Dependencies
  • Menetapkan pemuatan automatik
Walaupun kita boleh membuat projek GitHub kosong terlebih dahulu dan mengklonkannya secara tempatan, kita akan membuat folder baru secara langsung di dalam negara, memulakan projek, dan kemudian menolak kod sumber ke GitHub kemudian:

Perintah
$ mkdir example-package
$ cd ./example-package
$ git init
$ echo "/vendor/" >> .gitignore
$ composer init
$ git add .
$ git commit -m"第一次提交"
# 稍后您可以添加远程仓库并推送源代码
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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": {}
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Kami mempunyai konfigurasi asas pakej, tetapi ia tidak akan melakukan banyak kerja. Jika pakej hanya menggunakan bahasa PHP teras, beberapa pakej tidak memerlukan sebarang kebergantungan. Walau apa pun, anda perlu menyediakan beban automatik supaya pengguna pakej anda dapat memuat fungsi dan kelas dalam projek mereka.

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
Salin selepas log masuk
Salin selepas log masuk
Menetapkan pemuatan automatik

Selepas mencipta Asas
, kita boleh terus membuat kod sumber. Anda perlu memutuskan di mana untuk menyimpan kod sumber dalam projek anda. Folder boleh dinamakan mengikut kehendak, tetapi "standard" tipikal adalah

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

Seterusnya, buka fail
$ mkdir src/
$ touch src/Api.php
Salin selepas log masuk
Salin selepas log masuk
dan gunakan kekunci

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/"
        }
    }
}
Salin selepas log masuk
Salin selepas log masuk
ruang nama PHP ke folder. Apabila kita membuat fail dalam folder

, 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

Bagaimana kita mencuba kelas baru kita?
<?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);
    }
}
Salin selepas log masuk
Salin selepas log masuk

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"第一次提交"
# 稍后您可以添加远程仓库并推送源代码
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Kami menggunakan autoloader komposer, yang tahu bagaimana memuatkan fail pakej kami. Agar komposer memahami cara mencari fail kami, kami perlu menjalankan

: composer install

{
    "name": "laravelnews/feeds",
    "description": "获取Laravel-News.com的文章",
    "type": "library",
    "require": {}
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
anda juga boleh menjalankan arahan

selepas menambah ruang nama ke composer.json untuk mengemas kini autoloader komposer. dump-autoload

Jalankan fail

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

ujian pakej dan kebergantungan pembangunan


Saya cadangkan menulis ujian untuk mana -mana projek yang anda terlibat, dan saya suka membuat ujian seawal mungkin. Rangka kerja ujian yang paling biasa apabila membuat pakej PHP adalah phpunit. Pilihan kegemaran saya sejak kebelakangan ini adalah PEST PHP, dan saya fikir anda akan suka bagaimana ia mudah ditubuhkan!

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

Saya ragu -ragu anda tidak mahu menulis rangka kerja ujian anda sendiri dari awal, jadi kami akan memasang kebergantungan pembangunan pertama kami. Kami juga tidak selalu mahu membuat permintaan untuk titik akhir JSON masa nyata, jadi kami juga akan memasang perpustakaan mock (ejekan) untuk mensimulasikan panggilan HTTP:

git remote add origin git@github.com:laravelnews/example-package.git
Salin selepas log masuk
Salin selepas log masuk
Petua: Saya cadangkan mengkonfigurasi penyortiran pakej dengan pilihan konfigurasi berikut dalam

untuk mengekalkan kebergantungan yang dianjurkan: composer.json

$ mkdir src/
$ touch src/Api.php
Salin selepas log masuk
Salin selepas log masuk
Selepas memasang perosak dan ejekan, kita boleh memulakan perosak melalui bendera

. 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/"
        }
    }
}
Salin selepas log masuk
Salin selepas log masuk
Anda boleh mengatur ujian pakej dengan cara yang anda mahu, dan saya cadangkan anda menyemak dokumentasi perosak untuk butiran lengkap mengenai penyediaan perosak.

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);
    }
}
Salin selepas log masuk
Salin selepas log masuk
Perhatikan bahawa ia mengambil kelas

sebagai kebergantungan dan kami akan mengejeknya dalam ujian kami. Api

Seterusnya, kami akan membuat fail ini dalam fail

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"第一次提交"
# 稍后您可以添加远程仓库并推送源代码
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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!

Ketahui lebih lanjut


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": {}
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Cara Membina Pakej PHP Pertama Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan