Kā sākt lietot composer.phar

Ingmar Aasoja
RSS: Dalīties:
Šis ieraksts ir novecojis!

Līdz nesenam laikam PHP bibliotēku instalēšanai nebija vienotas pieejas. Risinājumi atšķīrās atkarībā no izmantotā ietvara. Tas mainījās līdz ar Composer atkarību pārvaldnieka parādīšanos, kas tagad ir kļuvis par standarta rīku lietotņu atkarību pievienošanai vai pat ietvaru komponentu pārvaldībai. Composer ir viegli lietojams rīks gan bezmaksas, gan iekšējo pakotņu instalēšanai un projektu izveidei.

Piezīme! Šis bloga raksts galvenokārt ir domāts iesācējiem PHP izstrādātājiem, kuri jau ir izmēģinājuši kādu no populārajiem ietvariem, piemēram, Laravel vai Symfony, un vēlas eksperimentēt ar kaut ko no nulles.

How to start using composer.phar

Īsumā, Composer ir pakotņu pārvaldnieks, taču tas spēj daudz vairāk. Composer jau ir uzinstalēts visos mūsu Zone platformas serveros, un to var izmantot savā virtuālajā serverī bez papildu darbībām. Composer atrisina vairākas problēmas, kas citādi radītu lieku darbu izstrādātājiem. Divas svarīgākās no tām ir šādas:

1. Atkarību un bibliotēku pārvaldība

Ja vēlaties izmantot trešās puses bibliotēku, to var pievienot ar vienu komandu Composer. Attiecīgajai bibliotēkai jau jābūt iekļautai Composer repozitorijā. Repozitorijs var būt gan publisks, gan iekšējs, izmantošanai privātam kodam.

Bibliotēku instalēšana ar Composer ir vienkārša, jo to var izdarīt ar vienu komandu. Instalācijas laikā Composer pārbauda jūsu bibliotēku savietojamību. Tas ir īpaši noderīgi situācijās, kad vienas bibliotēkas versijas savietojamība atšķiras no citas, un abas ir atkarīgas no trešās pakotnes. Composer atradīs jaunāko iespējamo savietojamo versiju. Ja tas nav iespējams, Composer jūs par to informēs.

2. Klases automātiska ielāde

Vēstures zinātāji atcerēsies laikus pirms klases automātiskās ielādes standartu ieviešanas. Toreiz katrai lietotnei bija savs kods, kas meklēja failus ar klasēm, kas vēl nebija ielādētas PHP kodā. Dažos gadījumos visas iespējamās klases tika ielādētas izpildes sākumā, apvienojot visus failus ar “require_once” komandu.

Par laimi, laika gaitā tika izveidots PSR-0 standarts un pēc tam modernākais PSR-4, kas nosaka, kā klases nosaukumam jāatbilst failu koku hierarhijai. Mūsdienās par to vairs nav jāuztraucas, jo Composer palīdz iestatīt automātisko ielādi visām klasēm, un PHP kodētājs var koncentrēties uz savu darbu.

Vienkāršs Composer lietošanas piemērs

Neatkarīgi no tā, cik vienkārša ir jūsu lietotne vai skripts, ir vienmēr viegli sākt ar Composer iestatīšanu, ja plānojat izmantot ārējās bibliotēkas.

Lai parādītu Composer minimālās iespējas un to, cik ļoti tas atvieglo darbu, izveidosim CLI (terminālī izpildāmu) lietotni, kas ar HTTP palīdzību pārbaudīs kādu URL un tā HTTP kodu. Lai gan to var izdarīt ar Curl, šajā piemērā izmantosim atsevišķu pakotni Guzzle.

Vispirms izveidosim mapi ar nosaukumu pinger un ieiesim tajā:

mkdir pinger
cd pinger

Savu PHP kodu rakstīsim failā pinger.php. Pieņemsim, ka visas pašu rakstītās klases atrodas src mapē un ir veidotas atbilstoši PSR-4 standartam.

Sāksim projektu, izpildot šādu komandu:

composer init

Pēc tam jums tiks uzdoti vairāki jautājumi. Lielākā daļa no tiem nav obligāti, taču ir vērts aizpildīt svarīgākos.

  • Pakotnes nosaukums ir brīvi izvēlēts lietotnes nosaukums, izmantojot pakotnes-izveidotājs/pakotnes-nosaukums formātu.
  • Apraksts ir īss lietotnes vai bibliotēkas apraksts.
  • Autors norāda autoru. Tas ir noderīgi, ja plānojat padarīt savu programmatūru publiski pieejamu.
  • Minimālā stabilitāte nosaka minimālās stabilitātes prasību bibliotēkām, kas pievienotas ar Composer. Veidojot lietotni, bieži svarīgi ir līdzsvarot stabilitāti un jaunāko versiju izmantošanu. To var iestatīt ar vērtībām dev vai stable, kas ir pašsaprotamas.
  • Pakotnes tips apraksta, kāda veida programmatūru veidosiet. Piemēram, “package” ir piemērots bibliotēkai, ko izmantos citā lietotnē, bet “project” – patstāvīgai lietotnei, kurai pievieno bibliotēkas.
  • Licence jānorāda, ja kods būs publiski pieejams. Citādi tas nav būtiski.

Pēc tam jums jautās, vai vēlaties uzreiz instalēt kādas atkarības. Šo soli izlaidīsim, vienkārši nospiežot Enter.

Parādoties uzvednei Pievienot PSR-4 autoload mapping?, izveidosim PSR-4 automātiskās ielādes iestatījumus, kas atvasināti no pirmā jautājuma. Tas nozīmē, ka mūsu pakotnes nosaukuma PascalCase versija sadalīs vendor un pakotnes nosaukumus starp nosaukumtelpām. Šajā piemērā konfigurēsim MyPackage.

Pēc tam tikai jāapstiprina izveidotais composer.json, nospiežot Enter.

Composer pēc noklusējuma izveidoja šādus failus un mapes:

  • src mape ar kodu, kas atrodas lietotnes nosaukumtelpā,
  • vendors mape atkarību, t.i., ar Composer instalējamo bibliotēku, uzstādīšanai. Šajā mapē ir arī autoload.php fails, kas jāiekļauj PHP skriptā.
  • composer.json fails ar Composer iestatījumiem šim projektam.

Tagad, kad composer.json ir izveidots, jāizvieto tā autoloaders, kas rūpēsies par lietotnes un pievienoto bibliotēku klašu automātisko ielādi. Lai to izdarītu, izveidosim PHP failu pinger.php lietotnei, ko izmantosim CLI.

<?php

use Composer\Autoload\ClassLoader;

// ielādējam composer
require_once __DIR__ . '/vendor/autoload.php';

Code language: HTML, XML (xml)

Tagad instalēsim Guzzle 7 HTTP klienta lietotni. Lai to izdarītu, izpildām šādu komandu:

composer require guzzlehttp/guzzle:^7.0Code language: JavaScript (javascript)

Mūsu saknes mapē tika izveidots fails composer.lock. Šajā failā tiek saglabātas precīzas pašlaik uzstādīto atkarību versijas. Izpildot composer install komandu nākamreiz, bibliotēkas tiks instalētas tieši ar tām pašām versijām, nodrošinot, ka tiks izmantotas tās pašas minor un patch versijas, kas bija izveides vai atjaunināšanas brīdī.

Mainīsim pinger.php failu, lai izmantotu Guzzle bibliotēku un parādītu HTTP atbildes kodu dažiem URL.

<?php

use GuzzleHttp\Client;

require_once __DIR__ . '/vendor/autoload.php';

$siteUrl = 'https://www.google.com';

$client = new GuzzleHttp\Client(['base_uri' => $siteUrl]);
$response = $client->request('GET', '');

echo $response->getStatusCode();
Code language: HTML, XML (xml)

Šis skripts izvadīs attiecīgā URL HTTP kodu, t.i., veiksmīgam pieprasījumam tas būs 2XX.

Veidojot tīmekļa lietotni, docroot, uz kuru norāda Apache HTTP pieprasījumus, jāatrodas atsevišķā mapē, piemēram, public. Šajā mapē jābūt tā sauktajam front controller index.php, kas saņems visus pieprasījumus un izpildīs kodu, izmantojot src mapē esošās klases.

Izveidosim failu public/index.php.

<?php

use MyPackage\Controller;

require_once __DIR__ . '/../vendor/autoload.php';

(new Controller())->showPage();Code language: HTML, XML (xml)

Izveidosim klases failu src/Controller.php kontrollerim. Tā kā iepriekš esam iestatījuši PSR-4 automātisko ielādi attiecīgajai nosaukumtelpai, attiecīgā klase tiek ielādēta index.php bez nepieciešamības norādīt atsevišķu failu.

<?php

namespace MyPackage;

use GuzzleHttp\Client;

class Controller
{
    public function showPage()
    {
        $siteUrl = 'https://www.google.com';

        $client = new Client(['base_uri' => $siteUrl]);
        $response = $client->request('GET', '');

        echo $response->getStatusCode();
    }
}Code language: HTML, XML (xml)

Tagad, norādot docroot uz public mapi, pārlūkā tiks parādīts HTTP kods, līdzīgi kā komandrindas lietotnē.

Piezīme! Parasti nedrīkst norādīt mapi, kurā atrodas Composer pievienotie faili vai lietotnes klases faili, kā docroot. Tāpēc šeit izveidojām atsevišķu public mapi, un viss kods atrodas virs tās direktoriju kokā, lai tam nevarētu piekļūt caur HTTP.

Kopsavilkums

Izveidotais risinājums sniedz vienkāršu veidu, kā sākt veidot PHP lietotni no nulles, izmantojot Composer. Lai gan ne vienmēr ir vērts izgudrot riteni no jauna, dažkārt ir lietderīgi rakstīt lietotni bez ietvara, lai apgūtu valodu vai izveidotu ļoti vienkāršas lietotnes. Šis ieraksts ir tikai ceļvedis, un šeit aprakstītais piemēra kods neveic nekādas sarežģītas darbības 🙂

Populāri ieraksti

.NO domain now at Zone – is your business ready for the Norwegian market?

.NO domēns tagad pieejams Zone – vai jūsu uzņēmums ir gatavs Norvēģijas tirgum?

Ants Korsar
Ja jūs plānojat paplašināt savu darbību Norvēģijā vai jau darbojaties tur, tagad ir īstais brīdis nodrošināt sev vietēju un uzticamu tīmekļa...
Zone Webmail 3.0: New features that make email management easier than ever

Zone Webmail 3.0: Jaunas funkcijas, kas padara e-pasta pārvaldību vieglāku nekā jebkad agrāk

Nikita Tikhomirov
Ir klāt uzlabotā Zone Webmail versija, kas piedāvā jaunu un lietotājam draudzīgu pieredzi. Mūsu mērķis ar šo jauno atjauninājumu bija vienkāršs:...
Still the rightful owner of your domain? ICANN’s new rule means it’s time to double-check

Vai joprojām esat sava domēna likumīgais īpašnieks? ICANN jaunais noteikums – laiks pārbaudīt vēlreiz

Jaanus Putting
Sākot ar 2025. gada 28. maiju, stājas spēkā jauna ICANN politika, kas ietekmē visus ģenerisko domēnu, piemēram, .COM, .ORG un .NET, īpašniekus....
Why choose a .EU domain today?

.EU domēns – kāpēc izvēlēties tieši šodien?

Jaanus Putting
Mēs dzīvojam laikā, kad globālās varas dinamika mainās ātrāk nekā jebkad agrāk. Kamēr Eiropa virzās uz spēcīgāku, vienotāku iekšējo tirgu,...