PHPDevs

Projekt obiektowy z Composerem i Twigiem? Czytaj!

Struktury kontrolne > Lekcja 1

Instrukcje warunkowe

Jako iż tłumaczenie na przykładach wydaje mi się bardziej przyjazne niż sucha teoria, znów od takowego rozpoczniemy. Załóżmy, że mamy prosty sklep internetowy z wirtualnym portfelem. W momencie, gdy klient będzie próbował zamówić jakiś towar, musimy sprawdzić czy posiada on odpowiednią ilość pieniędzy (więcej lub dokładnie tyle, ile kosztuje towar) i tylko jeśli tak jest pozwolić na zakup.

Do tego celu użyjemy właśnie instrukcji warunkowych, nazywanych też często warunkami, czy po prostu ifami (wynika to ze składni i jednocześnie języka angielskiego). Warunki umożliwiają wykonanie kodu w sytuacji, gdy określone wyrażenie zostanie spełnione lub nie.

Podstawowa konstrukcja instrukcji warunkowej wygląda tak:

<?php
if (wyrażenie) {
    // kod do wykonania jeżeli wyrażenie jest prawdziwe
}

A czymże jest wyrażenie? Mam nadzieję, że pamiętasz jeszcze lekcję o operatorach. Tam pokazałem Ci operatory porównania i możemy ich tutaj użyć. Równie dobrze możemy też wywołać funkcję. Ogólnie rzecz biorąc operujemy tu na wartościach typu bool. Wyrażenie uznane jest za prawdziwe jeśli zwróci true, a fałszywe jeśli false.

Zobaczmy już praktyczny przykład dla opisanego powyżej koszyka:

<?php
$wallet = 15.50;
$purchaseCost = 4.99;
if ($wallet >= $purchaseCost) {
    echo 'You can purchase!';
}
// result: You can purchase!

Warte zaznaczenia jest też, że klamry { } w powyższych zapisach nie są obowiązkowe. Można zapisać warunek bez nich, ale uwaga - możemy wtedy wykonać tylko jedno polecenie. Nie jedną linię, czy do końca aktualnej linii, a jedną konkretną rzecz (najczęściej do najbliższego średnika).

Przykład:
<?php
$wallet = 15.50;
$purchaseCost = 20;
if ($wallet >= $purchaseCost)
    echo 'You can purchase!';
echo 'outside';
// result: outside

Być może skraca to odrobinę kod, ale też obniża jego czytelność. Sugeruję Ci, abyś zawsze, nawet przy wykonywaniu jednej instrukcji, zapisywał klamry. Podobnie mówi standard PSR-2.

Wypada mi jeszcze wspomnieć o alternatywnym zapisie instrukcji warunkowej - z użyciem dwukropka i słówka endif. Takowy istnieje, jednak nie jest zbyt często używany i w kursie najpewniej się więcej nie pojawi.

<?php
$wallet = 15.50;
$purchaseCost = 4.99;
if ($wallet >= $purchaseCost):
    echo 'You can purchase!';
endif;
// result: You can purchase!

Operatory logiczne

Myślę, że w tym miejscu warto powrócić jeszcze na moment do operatorów. Większość najbardziej przydatnych już sobie omówiliśmy, ale nie było nic o operatorach logicznych. Do czego one służą? Prosto mówiąc możemy dzięki nim połączyć kilka wyrażeń w jedno.

Mamy też operator zaprzeczenia !, który sprawdzi czy wyrażenie nie będzie prawdziwe.

<?php
$status = false;
if (!$status) {
    echo 'not true';
}
// result: not true

Ćwiczenia

Od dzisiejszej lekcji rozpoczynam publikowanie ćwiczeń do wykonania po zapoznaniu się z lekcją. Ma to na celu sprawdzenie i utrwalenie nowej wiedzy.

Nie spodziewaj się jednak, że dam teraz do stworzenia nie wiadomo jak trudne aplikacje, albo pokażę od razu jak je zrobić. Jest to kurs od podstaw, więc krok po kroku przechodzimy do kolejnych zagadnień. Zadawane przeze mnie do wykonania programy może i mają obecnie mało sensu, jednak z pewnością pomogą zapamiętać i przyswoić omówioną wiedzę. Wszystkie zadania będą zawsze możliwe do wykonania z wiedzy przyswojonej w kursie - jeśli któreś miałoby zawierać dodatkową wiedzę, wychodzącą poza kurs, to na pewno to zaznaczę.

Rozwiązania

Udostępniam również przykładowe rozwiązania. Ale absolutnie nie zaglądaj do niego przed wykonaniem własnego programu! Publikuję je, abyś mógł porównać i sprawdzić swój kod po napisaniu. Jeśli po prostu wejdziesz i skopiujesz sobie gotowca to tylko Twój problem i Twoja strata. Ty obecnie próbujesz się tego nauczyć i Tobie powinno zależeć na tym, aby zrobić jak najlepiej i najwięcej samemu.

Nie martw się szczególnie jeśli Twój kod jest nieco inny. Bardzo często można uzyskać taki sam efekt na różne sposoby. Jeśli jednak masz jakieś wątpliwości, zapytaj w komentarzu, postaram się wyjaśnić ewentualne różnice.

Warto wiedzieć

Rozwiązania udostępniam w serwisie GitHub. Jest to, bardzo popularny wśród programistów, serwis pozwalający na przechowywanie swoich repozytoriów systemu kontroli wersji Git. Prościej mówiąc: w serwisie tym możemy przechowywać swój kod. Zapisywana jest każda zmiana, dostępnych jest też dużo opcji ułatwiających pracę nad projektem przez wiele osób. Z pewnością z GitHubem spotkasz się jeszcze nie raz. Myślę, że z odczytaniem przykładowego kodu nie będziesz mieć żadnego problemu - podaję bezpośredniego linka przy zadaniu. A o samym Gicie i GitHubie powiemy więcej gdzieś dalej. Pomimo tego, że Git nie jest bezpośrednio powiązany z PHP, to jest obecnie tak powszechny i tak często spotykany, że będę chciał poświęcić na niego część kursu.

Ćwiczenia

  1. Przygotuj skrypt sprawdzający czy osoba, której wiek podany zostanie w zmiennej $age, jest pełnoletnia. Jeśli tak, wyświetl komunikat "Adult!".
    <?php
    $age = 22;
    // your code
    

    Przykładowe rozwiązanie

  2. Oblicz pole kwadratu o boku długości $side i jeśli będzie równe 25 wypisz na ekranie: "Area: [obliczone pole]".
    <?php
    $side = 5;
    // your code
    

    Przykładowe rozwiązanie

Powrót Następna lekcja

Udostępnij

  • Facebook
  • Twitter
  • Google+

Komentarze