Wpływ silence operatora na error reporting w PHP

Hej, w dzisiejszym krótkim wpisie bierzemy na tapet słynny i jakże często używany operator @ tzw. STFU. Czy wiesz że jego użycie ma wpływ na error_reporting w PHP? Weźmy pod lupę ten przykład:

<?php declare(strict_types=1);

error_reporting(E_ALL);

set_error_handler(
    function () {
        // int(0) [PHP <= 7.4]
        // int(4437) [PHP >= 8.0]
        var_dump(error_reporting());
    },
    E_ALL
);

// int(32767) [E_ALL]
var_dump(error_reporting());

@trigger_error('warning', E_USER_WARNING);
Czytaj dalej Wpływ silence operatora na error reporting w PHP

Wpis PHP 7.3 – nieścisłosci

Cześć!

Serdecznie dziękuję za przeczytanie poprzedniego wpisu o nowej wersji PHP. Wpis był bardzo długi, poświęciłem mnóstwo pracy nad nim. Głównie w godzinach bardzo porannych 🙃. Niestety znalazły się w nim dwa błędy, za co najmocniej przepraszam. W tym wpisie opiszę oba błędy, zapraszam do czytanie 🙂.

Czytaj dalej Wpis PHP 7.3 – nieścisłosci

PHP 7.3 – co nowego?

👋 Dzień dobry.

Nowa wersja PHP v7.3 jest już tuż tuż. 13 grudnia zostanie udostępniona wersja produkcyjna. Zmian jest naprawdę dużo co widać po spisie treści 🙂. Zmiany nie są rewolucyjne, większość z nich to są drobnostki, ale na pewno każdy znajdzie coś dla siebie 👍.

📝 Spis treści:

  1. 💡 Elastyczna składnia HEREDOC / NOWDOC
  2. 💡 Przecinek po ostatnim argumencie w wywołaniach funkcji / metod
  3. 💡 Wsparcie referencji w list()
  4. 💡 json_encode() i json_decode() – rzucanie wyjątków
  5. 💡 Nowa funkcja is_countable()
  6. 💡 Nowe funkcje array_key_first/last()
  7. 💡 Nowa funkcja do haszowania haseł – Argon2id
  8. 💡 Same site cookie
  9. 💡 hrtime() – monotoniczny timer
  10. 💡 Nowa metoda – DateTime::createFromImmutable()
  11. 💡 Nowa funkcja – fpm_get_status()
  12. 💡 Nowe funkcje w GMP
  13. 💡 CompileError – nowy typ błędu
  14. 💡 Aktualizacja PCRE do PCRE2
  15. 💡 MBString – wsparcie pełnego case-mapping i case-folding
  16. 🔧 compact() rzuci Notice gdy napotka niezdefiniowaną zmienną
  17. 🔧 instanceof – literał jako pierwszy operand – brak Fatal error
  18. 🔧 Przeprojektowane narzędzie ext_skel
  19. 🔧 Wyjątki nie wypełnią stanu error_get_last()
  20. 🔧 TypeError zgłosi błędne typy jako int oraz bool
  21. 🔧 Instrukcja continue rzuci Warning wewnątrz switch
  22. 🔧 ArrayAccess nie zrzutuje $offset typu string na int
  23. 🔧 Naprawiono referencje w statycznych własnościach klas
  24. 🔧 Naprawiono odpakowywanie argumentów z kluczami nie int
  25. 🔧 BCMath użyje obsługi błędów PHP
  26. ⚰️ Wsparcie dla BeOS porzucono
  27. ⚰️ Deprecated – image2wbmp()
  28. ⚰️ Deprecated – Stałe case-insensitive
  29. ⚰️ Deprecated – funkcje mb* bez dokumentacji
  30. ⚰️ Deprecated – funkcje szukania w string z argumentem nie string
  31. ⚰️ Deprecated – fgetss() oraz filter string.strip_tags
  32. ⚰️ Deprecated – definiowanie własnej funkcji assert()
  33. ⚰️ Deprecated – FILTER_FLAG_SCHEME_REQUIRED oraz FILTER_FLAG_HOST_REQUIRED
  34. ⚰️ Deprecated – pdo_odbc.db2_instance_name dyrektywa php.ini

Czytaj dalej PHP 7.3 – co nowego?

Dependency Injection na prostym przykładzie w PHP

Cześć! Dzisiaj na tapecie wzór projektowy wstrzykiwanie zależności. Co znajdziesz w tym wpisie:

Czytaj dalej Dependency Injection na prostym przykładzie w PHP

Kahlan – PHP test framework – dla wolności, prawdy i sprawiedliwości

TDD

Czyli coś co chyba każdy z nas robi – a przynajmniej powinien! Kto słyszał o PHPUnit? Albo o PHPSpec? A może Codeception? To dobre i sprawdzone narzędzia które mają jednak swoje minusy. Dzisiaj chcę wam zaprezentować całkiem świeże narzędzie – Kahlan.

Co to kurcze jest?

Jest to kolejny framework do pisania testów. Czym się różni od poprzednich? Na pewno składnią. Czy znacie RSpec albo jasmine? Tutaj mamy bardzo podobną implementację dla PHP, a więc używamy describe-it. Jest to cholernie wygodne i łatwe do zrozumienia. Chcecie przykład*?

Czytaj dalej Kahlan – PHP test framework – dla wolności, prawdy i sprawiedliwości

SSH + XDebug + PhpStorm

Hi.

CLI debugging. I never did that. Until today. My tests started to fail and I had no idea why.

So that’s my story why I started to debug tests in the CLI via SSH.

Here’s a list of ingredients:

  • PhpStorm,
  • remote SSH (I’m using Vagrant),
  • PHP + XDebug.

First thing what we need to do is to configure the PhpStorm.

Open your setting and go to Languages & FrameworksPHPDebugDBGp Proxy.

dbgp proxy

  1. Fill the field IDE key with key you choose (I chose PHPSTORM and I recommend it).
  2. In the Host field put the IP which is seen by remote (run echo $SSH_CLIENT on the remote to see it).
  3. Default Port is 9000 and you should not change it.

Next thing to configure is Language & FrameworksPHPServers.

server

  1. Put the server Name.
  2. In the Host field type the IP address, same as on DBGp Proxy.
  3. If you set other Port for DBGp Proxy then change it here.
  4. As we are working on XDebug you don’t have to change the Debugger :).
  5. My remote has different folders structure so I had to set path mapping, probably you will have to do the same.

Ok PhpStorm is ready to go.

Now go to SSH and run this command:

export PHP_IDE_CONFIG="serverName=VAGRANT"
export XDEBUG_CONFIG="remote_host=10.0.2.2 idekey=PHPSTORM remote_connect_back=0"

In the first line put your Server Name which you’ve just set. In the second just update the remote_host with the IP address and change the idekey to yours.

The last thing to do is to enable listening for debug connections in the PhpStorm. Just click the button in the top right corner:

enable debug

Ah I forgot, please add some breakpoints! And then you can run your tests / scripts etc.

 

Enjoy 😀