Nowości

Nowości

RSS
PHPCon Poland 2015 Agenda
Grzegorz (scanner) Tlołka
Czwartek 03 Wrzesień 2015

Dzisiaj opublikowana została finalna agenda tegorocznego PHPCon Poland. Podobnie jak w zeszłym roku, podzielona ona zostanie na dwie ścieżki tematyczne, jednak sam podział ogłoszony zostanie w późniejszym terminie.
Na razie cieszcie oczy zacnymi tematami, które sami wybraliście i masujcie dłonie do powitań, gdyż albowiem w tej chwili w bazie jest ogółem 796 kont użytkowników, 741 zgłoszeń, w tym 542 potwierdzonych co oznacza wiele, wiele powitań.

PHPCon Poland 2015 Call-for-Proposals
Grzegorz (scanner) Tlołka
Wtorek 02 Czerwiec 2015

Wiadomo już, kiedy i gdzie odbędzie się tegoroczny kongres programistyczny PHPCon Poland 2015. Impreza rusza 13 listopada w czterogwiazdkowym gigancie „Ossa Congrees & Spa” nieopodal Rawy
Mazowieckiej. Jest to jeden z największych obiektów w kraju, zdolny pomieścić na salach i w pokojach ponad tysiąc uczestników.

Nowe artykuły

Nowe artykuły

RSS
Generowanie grafiki w PHP
Paweł (pawkow) Kowalewski
Sobota 18 Kwiecień 2009

Język PHP sam w sobie nie pozwala na tworzenie czy manipulowanie grafiką, służą do tego specjalne biblioteki dostarczające zestaw odpowiednich funkcji. Najpopularniejsze z nich to GD i ImageMagick, przy czym ta pierwsza jest częściej dostępna i bardziej popularna, przez co w sieci na jej temat znaleźć można więcej materiałów. Nie są to oczywiście argumenty przemawiające za korzystaniem wyłącznie z tego rozwiązania, w tym artykule jednak skupimy się właśnie na GD i funkcjach przez nią dostarczanych. Zacznijmy może od krótkiego przedstawienia biblioteki - poniższy opis to definicja GD przedstawiana na Wikipedii:

I to w zasadzie tyle, jeżeli kogoś interesuje krótka historia biblioteki zachęcam do zapoznania się z jej anglojęzycznym opisem.

Przejdź do działu artykuły
PHP News

Forum PHP.PL

Newsy z forum.php.pl
[phponion] Enumeratory w PHP 8.1 autor: Szado
Niedziela 27 Czerwiec 2021


Premiera PHP 8.1 zaplanowana jest na 25 listopada 2021 roku. Typ enumeracyjny, popularny ENUM to jedna z czekających nas nowości. Jakie problemy rozwiąże ENUM i jak będzie wyglądała jego implementacja? Sprawdźmy!

https://youtu.be/TI8Jo3Zh0kQ

Przykłady kodu użyte w materiale:

(kodem można pobawić się tu: https://3v4l.org/#focus=git.master)

Pure ENUM:
  1. <?php
  2. enum Fruit {
  3. case Apple;
  4. case Banana;
  5. case Orange;
  6. }
  7.  
  8. $fruit = Fruit::Orange;
  9. if ($fruit === Fruit::Banana) {
  10. echo 'no na pewno banan';
  11. }
  12.  
  13. // wyjątek - Fruit::Apple to obiekt klasy Fruit
  14. echo Fruit::Apple;


Backed ENUM:
  1. <?php
  2. enum Fruit: string {
  3. case Apple = 'jabłko';
  4. case Banana = 'banan';
  5. case Orange = 'pomarańcza';
  6.  
  7. // a tu dodatkowo metoda:
  8. public function canMakeJuice(): bool
  9. {
  10. return $this !== self::Banana;
  11. }
  12. }
  13.  
  14. echo Fruit::Apple->value; // jabłko
  15. var_dump(Fruit::Banana->canMakeJuice()); // false
JIT w PHP 8 autor: Szado
Środa 19 Sierpień 2020


https://www.youtube.com/watch?v=yE4JPhLXils

(prócz samego tematu JIT-a jestem otwarty na sugestie dotyczące filmu :])
PHP8 nowa instrukcja warunkowa match autor: Tomplus
Środa 05 Sierpień 2020


Od wersji PHP 8 otrzymamy nową instrukcję warunkową match. Będzie to świetna funkcja, która będzie częstszym wyborem do korzystania niż switch. Spójrzmy na różnice.

Klasyczna instrukcja switch prezentuje się tak:

  1. switch ($statusCode) {
  2. case 200:
  3. case 300:
  4. $message = null;
  5. break;
  6. case 400:
  7. $message = 'not found';
  8. break;
  9. case 500:
  10. $message = 'server error';
  11. break;
  12. default:
  13. $message = 'unknown status code';
  14. break;
  15. }


Nowa instrukcja matchbędzie można użyć w ten sposób:

  1. $message = match ($statusCode) {
  2. 200, 300 => null,
  3. 400 => 'not found',
  4. 500 => 'server error',
  5. default => 'unknown status code',
  6. };


Podsumowując match:
- instrukcja jest znacznie krótsza niż switch;
- nie wymaga używania break;
- może łączyć różne warunki, tylko używając jako separator przecinka;
- wartość jest przypisywana do zmiennej, nie trzeba przypisywać wartości do nich wielokrotnie;
- reszta zalet poniżej...

### Brak wymuszania typu
Instrukcja match będzie oparta na ścisłej kontroli wartości (strict). To tak, jakby używać === zamiast == w instrukcjach IF. Czasem może to być uciążliwe, ale stosowanie ścisłej kontroli to przyszłość języka PHP.

  1. $statusCode = '200';
  2.  
  3. $message = match ($statusCode) {
  4. 200 => null,
  5. default => 'unknown status code',
  6. };
  7.  
  8. // $message = 'unknown status code'



Brak wartości w instrukcji match zwraca błąd
Jeżeli instrikcja match będzie bez wartości domyślnej lub wartość będzie nieustawiona, PHP zgłosi wyjątek UnhandledMatchError. Tutaj też jest większy rygor, ale zapobiegnie to przed niezauważeniem błędów podczas pisania kodu.

  1. $statusCode = 400;
  2.  
  3. $message = match ($statusCode) {
  4. 200 => 'perfect',
  5. };
  6.  
  7. // UnhandledMatchError


### Łączenie warunków
Już powyższych przykładach można było zobaczyć połączone warunki, oddzielone jedynie przecinkami, coś podobnego jak przy switch:

  1. switch ($statusCode) {
  2. case 200:
  3. case 300:
  4. case 400:
  5. $message = 'combined expressions';
  6. break;
  7. }


Przy match okazuje się to prostsze, z mniejszą ilością pisania i mniej możliwości na błędy.


  1. $message = match ($statusCode) {
  2. 200, 300, 301, 302 => 'combined expressions',
  3. };


### Złożone warunki i wydajność
Możliwość użycia wyrażeń regularnych podczas dopasowania może być bardzo użyteczny przy wielu podobnych wartościach warunkowych, ale należy pamiętać że płynie to na spadek wydajności aplikacji, jednakże użyteczność tego wzorca dodatkowo pozytywnie odbije się na częstotliwości użycia nowej instrukcji.

  1. $message = [
  2. $this->matchesRegex($line) => 'match A',
  3. $this->matchesOtherRegex($line) => 'match B',
  4. ][$line] ?? 'no match';


### Rzucanie wyjątków
Rzucanie wyjątków throw w PHP 8, wtedy gdy potrzebujesz tak jak na przykładzie poniżej:

  1. $message = match ($statusCode) {
  2. 200 => null,
  3. 500 => throw new ServerError(),
  4. default => 'unknown status code',
  5. };


### Dopasowanie wzorców
Jedna z technik używana w innych językach programowania, umożliwiająca bardziej złożone dopasowywanie niż proste wartości. Coś jak wyrażenie regularne, ale o zmiennych zamiast treści. Jest to dopiero funkcja przyszłości która bo jest to na tyle złożony temat, że aby dobrze działała potrzeba poświęcić trochę więcej czasu nad nią.

### Na razie tylko wyrażenia jednowierszowe
Łyżka dziegciu do miodu musi być, a tym jest że wyrażenia mogą być tylko jednowierszowe. Tworzenie całych bloków wyrażeń, tak jak w switch prawdopodobnie zostaną dodane w innej wersji PHP8, ale nie ma na tą chwilę żadnych szczegółowych terminów.


Inspiracja artykułem: https://stitcher.io/blog/php-8-match-or-switch
[KONFERENCJA] PHPERS SUMMIT 2019 autor: Tomplus
Czwartek 22 Sierpień 2019


[KONFERENCJA] PHPCon 2019 autor: Tomplus
Czwartek 22 Sierpień 2019


Drupalday Gdańsk - wykłady z podstaw CMS w Tójmieście autor: Droptica
Piątek 29 Marzec 2019


II Konferencja JOIN! dotycząca baz danych - marzec 2017 autor: JOINConference2017
Piątek 24 Luty 2017


III EDYCJIA MASTERCODERA autor: Cybercom
Środa 21 Wrzesień 2016


[CI] Codeigniter 4 pre-alpha autor: aras785
Wtorek 16 Sierpień 2016


Symfony 3 autor: ohm
Wtorek 01 Grudzień 2015


Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System