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ń.
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.
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.
<?php enum Fruit { case Apple; case Banana; case Orange; } $fruit = Fruit::Orange; if ($fruit === Fruit::Banana) { } // wyjątek - Fruit::Apple to obiekt klasy Fruit
<?php enum Fruit: string { case Apple = 'jabłko'; case Banana = 'banan'; case Orange = 'pomarańcza'; // a tu dodatkowo metoda: public function canMakeJuice(): bool { return $this !== self::Banana; } }
switch ($statusCode) { case 200: case 300: $message = null; break; case 400: $message = 'not found'; break; case 500: $message = 'server error'; break; default: $message = 'unknown status code'; break; }
$message = match ($statusCode) { 200, 300 => null, 400 => 'not found', 500 => 'server error', default => 'unknown status code', };
$statusCode = '200'; $message = match ($statusCode) { 200 => null, default => 'unknown status code', }; // $message = 'unknown status code'
$statusCode = 400; $message = match ($statusCode) { 200 => 'perfect', }; // UnhandledMatchError
switch ($statusCode) { case 200: case 300: case 400: $message = 'combined expressions'; break; }
$message = match ($statusCode) { 200, 300, 301, 302 => 'combined expressions', };
$message = [ $this->matchesRegex($line) => 'match A', $this->matchesOtherRegex($line) => 'match B', ][$line] ?? 'no match';
$message = match ($statusCode) { 200 => null, 500 => throw new ServerError(), default => 'unknown status code', };