Nowoczesne PHP – zarządzanie zależnościami z composer

Autor: Rafal Marguzewicz
Opublikowany:
Kategorie: Bez kategoriiProgramowanie
Tagi:


composerCelem tego artykułu jest przedstawienie listy kroków które trzeba wykonać aby zacząć wykorzystywać automatycznego menadżera zależności Composer w swoich projektach.

  1. Najpierw instalujemy Composer
  2. Tworzymy sobie folder a w nim plik index.php
  3. oraz plik composer.json
  4. generujemy auto powiązania
  5. tworzymy plik/klasę która będzie ładowana automatycznie do naszego projektu

Tworzymy plik index.php

Na początek w pustym katalogu tworzymy plik index.php z takim kodem:

<?php
ini_set('display_errors', 1);
require('vendor/autoload.php');
?>

2 linia uruchamia pokazywanie błędów php na ekranie, może być to przydatne w przypadku gdy podczas konfigurowania środowiska popełnimy błąd, ale na koniec warto to skasować. 3 linia jest odpowiedzialna za połączenie composera z naszą aplikacją. Na razie nie mamy jeszcze czego includować ale przystępujemy do generowania wymaganych folderów i plików.

Tworzymy plik composer.json

Plik composer.json tworzymy w tym samym folderze co plik index.php. Jest to plik z którego composer będzie pobierał informacje o tym jakie pakiety ma pobrać, zaktualizować lub usunąć. Plik ten możemy stworzyć na dwa sposoby:
1. Za pomocą generatora z linii komend composer init
2. Za pomocą edytora tekstu.
Związku że pierwsza metoda nie generuje kompletnego pliku który będziemy potrzebowali do utworzenia połączenia na początek rekomenduje drugą metodę.
Skopiuj poniży tekst do pliku composer.json

{
    "name": "pceuropa/basic",
    "autoload": {
		"psr-4": {
			"test\\": "vendor/test"
		}
	}
}

generujemy auto powiązania

Teraz trzeba uruchomić komendę która poprosi composera aby ten przeczytał plik composer.json i na podstawie niego stworzył lokalne powiązania. Tą komendą jest:

composer dump-autload

W katalogu powinien pojawić się folder vendor – to tam będą znajdować się moduły, rozszerzenia, paczki itp które będziesz ładował do swoich projektów.
A nasz folder powinien już zawierać 2 pliki i jeden folder
/index.php
/composer.json
/vendor

Tworzymy klasę do importowania

Ok, teraz czas tworzyć w katalogu vendor folder o nazwie test

mkdir vendor/test

A w folderze test tworzymy testową klasę która posłuży nam do sprawdzenia czy auto ładowanie paczek działa.
Zawartość pliku /vendor/test/Email.php

<?php
namespace test;
    
class Email {

	function __construct (){
		echo('Klasa email działa');
	}
}
?>

Ok teraz możemy użyć tej klasy w pliku index.php edytując go do tej formy:

<?php
ini_set('display_errors', 1);
require('vendor/autoload.php');

use test\Email;

$email = new Email();

?>

Po odpaleniu pliku powinien pojawić się komunikat Klasa email działa. I to tyle. Ktoś mógłby pomyśleć Wow tyle zachodu aby wykonać taką prostą operację. Przecież można było użyć od razu require(‚Email.php’) jest szybciej i prościej. Aby wytłumaczyć lepiej do czego to się przydaje w bardziej zaawansowanym programowaniu przedstawie jeszcze kilka możliwości composera.

Załóżmy że chcemy naprawdę napisać funkcję która będzie wysłała emaile. Pierwsze co przychodzi początkującym do głowy to kodowanie funkcji mail.

<?php
		$od  = "From: uzytkownik@domain.com \r\n";
		$od .= 'MIME-Version: 1.0'."\r\n";
		$od .= 'Content-type: text/html; charset=iso-8859-2'."\r\n";
		$adres = "lubi@banany.ch";
		$tytul = "Tytuł wiadomości";
		$wiadomosc = "wiadomosc emaila";

		// użycie funkcji mail
		mail($adres, $tytul, $wiadomosc, $od);
		echo('email został wysłany - chyba');
?>

Jednak w tym przypadku trzeba napisać jeszcze wiele linii kodu. Aby rozwiązać wszystkie problemy które napotkamy na drodze. Wysyłka emaili to bardzo stary temat i już na pewno kto koduje 40 lat to zrobił. Dla tego pokaże Ci jak dołączyć do tego projektu paczkę swiftmailer. Jest to tak zwane rozwiązanie atomowe. Czyli nie ważne jak beznadziejnie masz skonfigurowane środowisko na którym pracujesz to jeżeli ustawisz odpowiednie dane dostępowe do zdalnego serwera SMTP to swiftmailer będzie wysyłał emaile np za pomocą serwera GMAIL a nie z naszego kompa.

Instalacja paczki za pomocą Composer

Więc prosimy composera aby pobrał z internetu do katalogu vendor paczkę swiftmailer, komendą:

composer require swiftmailer/swiftmailer

install swiftmailer

Paczka jest już pobrana więc możemy skorzystać z tej klasy w naszym kodzie, modyfikujemy plik index.php (nie zapomnij podać odpowiedniego emaila i hasła)

<?php
ini_set('display_errors', 1);
require('vendor/autoload.php');


$transport = Swift_SmtpTransport::newInstance()
  ->setHost('smtp.gmail.com')
  ->setPort(465)
  ->setUsername('email@gmail.com')
  ->setPassword('hasło')
  ->setEncryption('ssl');


$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Temat')
  ->setFrom(['email@gmail.com'])
  ->setTo(['info@pceuropa.net'])
  ->setBody('Treść wiadomości');

$result = $mailer->send($message);

if ($result){
	print_r($result);
}else {
	echo('coś nie tak');
}

?>

W ten sposób możemy zainstalować wiele paczek, paczki możemy wyszukiwać na GitHubie, packgist lub w wyszukiwarkach. Kolejnym krokiem może być zainstalowanie paczki odpowiedzialnej za testowanie naszego kodu. Dla tego polecam zobaczyć artykuł jak Instalacja frameworka do testów PHP. Temat autoładowania zależności oraz testowanie automatyczne przyda Ci się czy to w rozmowie o pracę lub dla własnego doskonalenia zdolności programistycznych.

Nowoczesne PHP – zarządzanie zależnościami z composer
5 / 2 votes


Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Nazwa *
E-mail *

Przeczytaj poprzedni wpis:
Kopiowanie plików między serwerami Linux

Gdy jesteśmy stoimy przed zadaniem skopiowania plików (np. www lub backup) z jednego serwera na drugi możemy zrobić to za...

Zamknij