Du har utvecklat ett vackert PHP-paket som du har lagt ner ditt hjärta och din själ i och är stolt över. Nu är det dags för distribution, och en viktig del är att se till att du ger andra den enklaste vägen att ladda ner och använda ditt paket, men hur?
Tack och lov, för detta finns Packagist a free de facto repository för alla PHP-paketberoenden. Lär dig hur du får ditt PHP-paket listat på Packagist, så att andra kan ladda ner och installera det med ett kommando.
Strukturera ditt paket på rätt sätt
Före distribution måste ditt paket struktureras ordentligt och måste använda namnutrymmen. Bestäm ett rotnamnområde för ditt paket. Detta kan vara vad du vill, men i allmänhet rekommenderas det att använda FörfattarePaketnamn.
Till exempel namnområdet JSmithBlogPoster skulle informera andra om att utvecklaren av paketet går under namnet Jsmith och det här är deras paket som heter BlogPoster.
Med rotnamnutrymme bestämt, skapa en /src/ katalogen i ditt projekt och flytta alla PHP-filer till den. Varje fil måste ha rätt deklaration överst, så alla PHP-filer i /src/ katalogen måste börja:
<?php
namespace JSmithBlogPoster;
Namnutrymmesdeklarationen är relativ till katalogstrukturen. Till exempel, om du har en fil på /src/Images/Uploader.php, överst i filen skulle du ha:
<?php
namespace JSmithBlogPosterImages;
class Uploader
{
}
Se till att klassdeklarationen för alla PHP-filer är samma som filnamnet, som exemplet ovan visar. De Uploader.php filen har klassnamnet Uppladdare.
Registrera ett Packagist-konto
Om du inte redan har ett, skapa ett Packagist-konto, det går snabbt och free. Även om det inte krävs, är det standardpraxis att registrera sig med samma användarnamn som i rotnamnutrymmet du valde i avsnittet ovan. Om det användarnamnet inte är tillgängligt, välj något liknande.
Du behöver inte göra något med Packagist-kontot ännu, men det är bra att ha det klart.
Skapa filen composer.json
Öppna en textredigerare och skapa en i rotkatalogen för ditt projekt composer.json fil, med följande innehåll som exempel:
{
"name": "jsmith/blogposter",
"description": "An excellent blog posting package...",
"type": "package",
"homepage": "https://yourdomain.com",
"license": "MIT",
"require": {
"php": ">=8.0.0"
},
"autoload": {
"psr-4": {
"JSmith\BlogPoster\": "src/"
}
}
}
Det finns bara två viktiga aspekter av filen ovan att notera.
Först är namn element i toppen. Detta som måste vara två strängar åtskilda av ett snedstreck, den första är ditt Packagist-användarnamn och den andra är det önskade namnet på paketet. Med exemplet ovan är Packagist-användarnamnet jsmith, och paketnamnet är bloggposter.
För det andra, längst ner inom autoload avsnitt kommer du att märka raden:
"JSmith\BlogPoster\": "src/"
Ändra den här raden så att rotnamnutrymmet du tidigare bestämt dig för pekar på katalogen /src/. När ditt paket har installerats av någon annan kommer Composer automatiskt att mappa ditt rotnamnutrymme till underkatalogen som ditt paket installerades i.
Ladda upp ditt paket till Github
Du måste ladda upp ditt PHP-paket till ett Github-förråd, eftersom det är den huvudsakliga integrationsmetoden Packagist använder. Om du inte redan är bekant med att skapa och publicera till ett Github-förråd, kolla in Hur du skapar ditt första förråd på GitHub för en utmärkt steg-för-steg-guide.
Se till att ladda upp hela ditt PHP-paket inklusive alla filer i /src/ och filen composer.json. Om du helt enkelt vill ladda upp hela projektkatalogen till GitHub, öppna en terminal i din projektkatalog och kör:
git add ./*
git commit -m "Initial commit"
git push -u origin master
Du måste också lägga till en tagg till GitHub-förrådet, eftersom taggar är hur Packagist håller reda på utgåvor och versionsnummer för dina paket. Kör kommandona för att markera det aktuella arkivet som v0.1:
git tag 0.1
git push --tags
Lägg till en PHP-lista på Packagist
Allt är nu på plats, så med ett leende kan du gå vidare och skicka ditt PHP-paket för omedelbar notering på Packagist. Besök sidan Skicka paket och ange URL:en till ditt GitHub-förråd, som kommer att vara något i stil med:
https://github.com/jsmith/blogposter.git
Slå Kolla upp Skicka-knappen, och Packagist kommer att ladda ner filen composer.json från ditt arkiv, plus alla tillgängliga taggar/releaser och annan information.
Nästa sida kommer att bekräfta att du vill publicera paketet; när den har bekräftats kommer du att kunna se din nya Packagist-lista på en webbadress som:
https://packagist.org/packages/jsmith/blogposter
Installera ditt paket med Composer
Testa det och installera ditt PHP-paket med Composer. Om du inte redan har Composer installerat kan du installera det med följande kommando:
sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Skapa en ny katalog och kör kommandot i den:
composer require jsmith/blogposter
Composer kommer att göra sin magi, och du kommer att märka att en ny /vendor/-underkatalog kommer att dyka upp, som du ser ditt PHP-paket om du tittar inuti!
Ge det ett test och ladda ditt PHP-paket. Med exemplet ovan, om det fanns en fil a /src/Blogger.php i paketet, skulle ett snabbt testskript för att ladda den vara:
<?php
use JSmithBlogPosterBlogger;
// Load composer dependences
require("./vendor/autoload.php");
// Get blogger
$client = new Blogger();
echo "Got a " . $client::class . "
";
Gå framåt och dela med världen
Du har nu lärt dig hur enkelt det är att strukturera ditt PHP-paket på rätt sätt och lista det på Packagist så att alla i världen kan ladda ner och inkludera ditt paket i sitt projekt direkt med ett enda kommando.
Grattis, du har nu öppnat ditt PHP-paket till huvuddistributionskanalen inom PHP-ekosystemet. Gå framåt och dela din kreativitet och hårda arbete med världen.
Om författaren
Matt Dizak (18 artiklar publicerade)
Mer från Matt Dizak
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
