PHPDevs

Projekt obiektowy z Composerem i Twigiem? Czytaj!

Podstawy języka > Lekcja 4

Operatory

Jak sama nazwa mówi, służą one do wykonywania jakichś operacji na dla przykładu zmiennych, liczbach czy stringach.

Wszystkich operatorów jest sporo, listę znajdziemy w dokumentacji i nie będziemy teraz omawiać ich wszystkich po kolei. Pokażę te podstawowe i moim zdaniem najważniejsze dla Ciebie w tym momencie.

Operatory arytmetyczne

Są to podstawowe operacje matematyczne, które zapewne każdy z nas zna.

Operatory przypisania

Podstawowym operatorem w tej grupie będzie z pewnością już wielokrotnie wcześniej używany znak =.

<?php
$year = 2017;
echo $year; // result: 2017

Możemy też użyć go kilka razy w jednym zapisie. W takiej sytuacji przypisanie będzie następowało w kolejności od prawej strony.

<?php
$name = $user = 'Jan';
echo $name; // result: Jan
echo $user; // result: Jan

Co więcej, możemy też połączyć go z wybranym operatorem arytmetycznym, aby od razu wykonać określoną operację i przypisać efekt jej wykonania. Jak to działa w praktyce?

<?php
$day = 20;
$day += 7;
echo $day; // result: 27
<?php
$price = 2.99;
echo $price -= 0.39; // result: 2.6
<?php
$candies = 10;
$people = 3;
$candies *= $people;
echo $candies; // result: 30
<?php
$apples = 40;
echo $apples /= 5; // result: 8
<?php
$users = 10;
echo $users %= 4; // result: 2
<?php
$number = 3;
echo $number **= 3; // result: 27

Uwaga!

Pamiętaj, że jeśli chcesz użyć przypisania z wykonaniem operacji, zmienna musi być wcześniej zadeklarowana. W przeciwnym wypadku otrzymasz ostrzeżenie o użyciu niezadeklarowanej zmiennej.

<?php
$day += 7;
echo $day; // result: notice - undefined variable  7

Operatory ciągu

Tutaj podstawowym operatorem jest znak kropki. Umożliwia on łączenie kilku ciągów w jeden. Nazywamy to konkatenacją.

<?php
$logo1 = 'PHP';
$logo2 = 'Devs';
echo $logo1 . $logo2; // result: PHPDevs

Uwaga!

W większości języków programowania konkatenację wykonuje się przy użyciu znaku dodawania (+). Należy jednak pamiętać, że w PHP służy do tego ., a próba połączenia dwóch stringów plusem zakończy się błędem.

Tak jak w poprzednim podrozdziale, tu też możemy wykonać łączenie ciągów od razu z przypisaniem. Będzie to wyglądało tak:

<?php
$logo = 'PHP';
$logo .= 'Devs';
echo $logo; // result: PHPDevs

Operatory inkrementacji i dekrementacji

Jest to odpowiednio zwiększenie (++) i zmniejszenie (--) o jeden danej wartości. Wyróżniamy preinkrementację i postinkrementację (podobnie z resztą z dekrementacją). Czym się różnią? Preinkrementacja najpierw zwiększa wartość o jeden i zwraca już powiększoną wartość, a postinkrementacja zwraca aktualną i dopiero powiększa wartość. Identycznie jest z dekrementacją (predekrementacja i postdekrementacja), z tym że wartość jest zmniejszana.

Jeśli jeszcze niezbyt zrozumiałeś to spójrz na poniższe przykłady i wszystko stanie się jasne.

<?php
$count = 0;
echo $count++; // result: 0
echo $count; // result: 1
<?php
$count = 0;
echo ++$count; // result: 1
<?php
$count = 10;
echo $count--; // result: 10
echo --$count; // result: 8

Operatory porównania

Często spotkasz na swojej drodze sytuacje, gdy będzie trzeba coś porównać - na przykład dwa ciągi tekstowe, czy dwie liczby. Szczególnie często porównania spotkasz przy instrukcjach warunkowych (które już niedługo pojawią się w kursie). Zobaczmy jakie mamy do dyspozycji operatory do tego celu.

Operator wykonania

Umożliwia wykonanie poleceń powłoki. W przypadku systemów Linux domyślną powłoką jest bash, tak więc to w nim wykonywane będą podane polecenia.

<?php
echo `pwd`;

Zwróć uwagę, że nie jest to zwykły a tak zwany odwrotny apostrof `. Jeśli znasz chociaż podstawowe polecenia, to pewnie wiesz już, że na ekranie zostanie wyświetlona ścieżka do aktualnego katalogu.

Operator kontroli błędów @

Umożliwia on ukrycie ewentualnych błędów, co jest bardzo złą praktyką. W momencie, gdy coś się źle dzieje, chcielibyśmy jako programiści o tym wiedzieć, a nie ukryć pomocny nam komunikat, prawda? Widząc treść błędu znacznie łatwiej naprawić problem. Natrafiłem na bardzo wiele sytuacji, gdy ktoś szuka błędu i go nie widzi, a w kodzie używa tego operatora, czyli niestety interpreter nie poinformuje go o problemie.

<?php
@$division = 5 / 0; // not showing error: "division by zero"
echo $division;

Używanie @ jest, jak wspomniałem, bardzo złą praktyką i nie należy tego robić - i mówię o tym właśnie dlatego, abyś wiedział do czego ona służy i co powoduje. Stanowczo odradzam stosowanie tego operatora w swoim kodzie. Istnieją znacznie lepsze sposoby nad kontrolą wyświetlania błędów, na przykład ustawienie display_errors w php.ini, omawiane podczas przygotowania środowiska.

Inne

Są jeszcze operatory bitowe czy logiczne. O nich może jednak nieco później, nie chciałbym na raz omawiać aż tylu zagadnień. Jeśli należysz do osób bardzo ciekawskich, wszystko możesz doczytać już teraz w dokumentacji ;)

Poprzednia lekcja Następna lekcja

Udostępnij

  • Facebook
  • Twitter
  • Google+

Komentarze