1. Wprowadzenie do języka PHP

Podobne dokumenty
Oczywiście plik musi mieć rozszerzenie *.php

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Tablice (jedno i wielowymiarowe), łańcuchy znaków

2. Łańcuchy tekstowe w PHP

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

PHP: bloki kodu, tablice, obiekty i formularze

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Podstawy programowania skrót z wykładów:

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Algorytmy i struktury danych. wykład 1

W dowolnym momencie można zmienić typ wskaźnika.

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Lab 9 Podstawy Programowania

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Programowanie internetowe

LibreOffice Calc VBA

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

ZMIENNE. Podstawy PHP

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Tablice, funkcje - wprowadzenie

Zmienne, stałe i operatory

Materiały do laboratorium MS ACCESS BASIC

1 Podstawy c++ w pigułce.

Bazy Danych i Usługi Sieciowe

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Systemy operacyjne. Laboratorium 8. Perl find

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

10. Programowanie obiektowe w PHP5

Wykład 2 Składnia języka C# (cz. 1)

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

MATERIAŁY DO ZAJĘĆ II

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Programowanie obiektowe

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Wstęp do programowania. Różne różności

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Dr Michał Tanaś(

Podstawy programowania w C++

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wykład 8: klasy cz. 4

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Podstawy programowania. Podstawy C# Tablice

Programowanie strukturalne i obiektowe. Funkcje

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Programowanie Komputerów

Java Podstawy. Michał Bereta

Smarty PHP. Leksykon kieszonkowy

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

Wprowadzenie do języka Java

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

ZASADY PROGRAMOWANIA KOMPUTERÓW

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Systemy internetowe Wykład 3 PHP

Wstęp do informatyki- wykład 11 Funkcje

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wstęp do informatyki- wykład 9 Funkcje

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

PHP. PHP: Hypertext Preprocessor. mgr inż. Remigiusz Pokrzywiński

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Języki skryptowe w programie Plans

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Test przykładowy 2 PAI WSB Wrocław /06/2018

Warunek wielokrotnego wyboru switch... case

Wstęp do programowania

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Programowanie obiektowe

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

JS:Obiekty, tablice, JSON

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją

Rozdział 4 KLASY, OBIEKTY, METODY

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wstęp do Programowania, laboratorium 02

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Transkrypt:

1. Wprowadzenie do języka PHP Język PHP jest generalnie w swojej składni podobny do języka C, chociaż występuje tu szereg różnic. 1.1. Zmienne W PHP nazwy zmiennych poprzedzamy znakiem dolara ($). Nie ma znaczenia rodzaj zmiennej (tekstowa, liczbowa, tablica itp.). Zmienna nie wymaga deklaracji, przez co nie posiada z góry określonego typu, jak widać w przykładzie: $x = 33; // $x jest liczbą całkowitą $x = 73.26; // teraz jest liczbą zmiennoprzecinkową $x = 'tekst'; // a teraz tekstem Typ zmiennej jest określany na podstawie jej zawartości i kontekstu w jakim została użyta. Niezbędne konwersje są w razie potrzeby wykonywane automatycznie. Do dyspozycji mamy 8 typów zmiennych. Cztery typy proste: liczbowy całkowity (integer), liczbowy zmiennoprzecinkowy (double), logiczny (boolean), tekstowy (string).

Dysponujemy też dwoma typami złożonymi: tablicą (array) i obiektem (object). Tablica w PHP nie jest zwykłą tablicą, ale tablicą asocjacyjną, a więc zestawem par klucz-wartość, przy czym klucz wcale nie musi być liczbą, może być tekstem. Możemy na przykład mieć tablicę (niech nosi nazwę $tablica): klucz wartość 'miś' 'Uszatek', 'pies' 'Pankracy', 'strażak' 'Sam', 'trener' 'Leo' i indeksować ją w następujący sposób $x = $tablica['miś']; ($x ma wartość 'Uszatek') można też tradycyjnie $x = $tablica[1]; ($x ma wartość 'Pankracy')

Oprócz tego mamy dwa specjalne typy zasób (resource) i NULL. Zasób służy do reprezentowania różnego rodzaju (właśnie...) zasobów systemu, np. otwieranych plików. NULL natomiast to po prostu zmienna nie posiadająca żadnej wartości (zauważmy, że 0 czy tekst '' jest wbrew pozorom wartością...). 1.2. Konwersja typów Konwersja między typami jest przeprowadzana automatycznie w razie potrzeby. Oczywiście nie zawsze musi się ona zakończyć sukcesem... Zacznijmy od najbardziej oczywistych konwersji: Na typ logiczny możemy skonwertować w zasadzie wszystko. Fałszem są następujące wartości: liczba stałoprzecinkowa 0, liczba zmiennoprzecinkowa 0.0, pusty łańcuch tekstowy, lub tekst '0'. tablica bez elementów, obiekt bez zmiennych, NULL. Cokolwiek innego jest uważane za prawdę logiczną.

Na liczbę stałoprzecinkową można skonwertować: typ logiczny prawda to 1, fałsz to 0, liczbę zmiennoprzecinkową zostanie zaokrąglona w kierunku zera (dodatnie w dół, ujemne w górę). Zalecana wyjątkowa ostrożność, liczba większa od maksymalnego zakresu liczb całkowitych da wynik nieokreślony, możemy się także zdziwić, gdy się okaże że (0.1 + 0.7) * 10 to całkowite 7 a nie 8 (!). tekst, konwersja kończy się po napotkaniu pierwszego znaku nie będącego cyfrą, zatem spokojnie można skonwertować np. '12 krzeseł stało przy tym stole', wynikiem będzie 12. Jeżeli piewrszym znakiem nie jest cyfra, wynikiem jest 0. Podobnie jest z liczbą zmiennoprzecinkową, różnica polega wyłącznie na rozpoznawaniu zapisu naukowego przy konwersji z tekstu (w postaci np. 1.6e+03, -.7E4, 2.273e-6 i tym podobne). Na tekst możemy skonwertować wszystko, co prawda niektóre konwersje są niezbyt użyteczne. Wartości logiczne są konwertowane na łańcuchy '1' (prawda) i '' (fałsz, łańcuch pusty). Liczby sprawa jasna jak sądzę (jeżeli chcemy formatować jak w C, trzeba tak jak w C użyć funkcji sprintf()). NULL skonwertowany na tekst daje łańcuch pusty. Konwersja tablic, obiektów i zasobów na tekst jest mało interesująca, dostaniemy odpowiednio teksty: 'Array', 'Object' i 'Resource id #x', gdzie x to wewnętrzny numer zasobu.

Na tablicę zmienić możemy bez problemu typ logiczny, liczbę stało- i zmiennoprzecinkową oraz tekst. Dostaniemy jednoelementową tablicę z elementem o indeksie 0 i zawartością taką samą jak podana zmienna. Podobnie będzie z zasobem. Konwersja obiektu na tablicę zainteresuje nas, gdy zajmiemy się programowaniem obiektowym w PHP. NULL z kolei daje tablicę pustą. Konwertowanie do obiektu jest możliwe, omówimy to później. Konwertowanie do zasobu natomiast możliwe nie jest. Jawna i niejawna konwersja typów W zdecydowanej większości przypadków (o wiele częściej niż w C/C++) konwersja typów zachodzi niejawnie w razie potrzeby. W PHP bardzo rzadko sięgamy po jawną konwersję, czy inaczej rzutowanie typów. Zapisuje się je tak samo jak w C: $x = '3.141592654'; // $x jest tekstem $y = (double)$x; // $y jest typu zmiennoprzecinkowego

1.3. Pozyskiwanie informacji o zmiennej Z potrzebą uzyskania informacji o typie i zawartości zmiennej najczęściej spotkamy się przy testowaniu i usuwaniu błędów w skrypcie. Wygodnym narzędziem jest funkcja var_dump(). Oto kilka przykładów: $b = 14; var_dump($b); int(14) $b = 'Ala ma kota, a kot ma pchły'; var_dump($b); string(27) "Ala ma kota, a kot ma pchły" $b['jan'] = 'Kowalski'; $b['tomasz'] = 'Kwiatkowski'; var_dump($b); array(2) { ["Jan"]=> string(8) "Kowalski" ["Tomasz"]=> string(11) "Kwiatkowski" }

Z potrzebą uzyskania informacji o typie zmiennej możemy się też spotkać w czasie wykonania programu, kiedy informacja ta steruje samym programem. Funkcja gettype() zwraca łańcuch tekstowy opisujący typ zmiennej ('boolean', 'integer', 'double', 'string', 'array', 'object', 'resource', względnie 'NULL', czy nawet 'unknown type'). Oprócz tego mamy szerreg wygodnych funkcji zwracających wartość logiczną, a sprawdzających, czy zmienna jest konkretnego typu. Ich nazwy są samotłumaczące się: is_int() is_float() is_string() is_boolean() is_array() is_object() is_resource()

1.4. Zasięg zmiennych Generalnie w PHP wszystkie zmienne są globalne, a więc są widziane w każdym miejscu skryptu, również jeżeli przedzielony jest fragmentami kodu HTML. Wyjątkiem są zmienne użyte wewnątrz funkcji. Inaczej niż w C, zmienne globalne nie są widziane wewnątrz funkcji zdefiniowanych przez użytkownika! $g = 3; function f() { var_dump($g); } f(); NULL Wbrew oczekiwaniom, odwołanie się do zmiennej $g wewnątrz funkcji nie jest odwołaniem do globalnego $g! PHP stwierdza tu odwołanie się do lokalnego $g, które z globalnym nie ma nic wspólnego. To lokalne $g nie ma nadanej wartości, stąd wynik. Chcąc korzystać z globalnych zmiennych wewnątrz funkcji możemy albo podać je jako parametry funkcji, albo użyć dyrektywy global, przy czym oba sposoby mają różne konsekwencje.

Przy przekazaniu zmiennej globalnej jako parametru, operujemy na jej kopii, tak jak przy przekazaniu przez wartość w C: $g = 3; function f($parametr) { var_dump($parametr); $parametr = 17; } f($g); var_dump($g); int(3) int(3)

Przy przekazaniu zmiennej globalnej za pomocą dyrektywy global operujemy na samej zmiennej, troszkę tak jak przy przekazaniu przez referencję w C++: $g = 3; function f() { global $g; } var_dump($g); $g = 17; f($g); var_dump($g); int(3) int(17)

1.5. Referencje Oczywiście referencje w PHP też są możliwe i zachowują się bardzo podobnie jak w C++, w poniższym przykładzie $ref jest referencją do $zmienna: $zmienna = 3; $ref = &$zmienna; var_dump($zmienna); var_dump($ref);?><br><? $ref = 123; var_dump($zmienna); var_dump($ref); int(3) int(3) int(123) int(123)

1.6. Zmienna zmienną jest Egzotyczną rzeczą są nazwy zmiennych będące zmiennymi w PHP można dynamicznie wygenerować nazwę zmiennej. Najlepiej wyjaśni to przykład: $a = 'b'; $b = 426; $c = $$a; var_dump($c); int(426) Łatwo się domyślić jak to działa. Zapis $$a jest interpretowany jako ${$a}, wartością wnętrza nawiasu klamrowego jest rzecz jasna 'b', wyrażenie zostaje więc uproszczone do $b. Znakomity sposób do zaskoczenia czytającego źródła... $a = 'b'; $e = 'd'; $b = 426; $d = 'a'; $c = $$$$e; var_dump($c); Wynik jest oczywiście taki sam jak poprzednio int(426)...