PHP 1 Γηδάζθνληεο: Π. Αγγειάηνο, Γ. Εήλδξνο Δπηκέιεηα δηαθαλεηώλ: Γ. Εήλδξνο Σρνιή Ζιεθηξνιόγσλ Μεραληθώλ θαη Μεραληθώλ Υπνινγηζηώλ
Σηόρνο ηεο ώξαο Δηζαγσγή ηεο γιώζζαο PHP ζε αξράξην επίπεδν: Βαζηθή ζύληαμε Σπλδπαζκόο PHP κε άιιεο γιώζζεο Μεηαβιεηέο Αιθαξηζκεηηθά Τειεζηέο if, else, switch for, while Σπλαξηήζεηο Φεηξηζκόο θνξκώλ
PHP PHP Hypertext Preprocessor Τξέρεη ζηνλ server θαη όσι ζηνλ client Σπλδπάδεηαη κε θάπνηνλ web server όπσο ν Apache Αλνηρηνύ θώδηθα, ηξέρεη ζε Windows, Linux, θαη αιινύ Παπάγει ην HTML πνπ ζα θηάζεη ζην ρξήζηε Θα κειεηήζνπκε ηελ έθδνζε 5.2
Δλαιιαθηηθέο ιύζεηο ASP Ζ server-side ιύζε ηεο Microsoft JSP Server-side ιύζε βαζηζκέλε ζηε Java Python, Django Ruby, Ruby on Rails
Τη κπνξεί λα θάλεη; Γπλακηθέο ζειίδεο Login, δηαρείξηζε ρξεζηώλ Μόληκε απνζήθεπζε δεδνκέλσλ (ζην server) Γηαρείξηζε πξνζσπηθνύ πεξηερνκέλνπ Πξνζσπηθά κελύκαηα Φσηνγξαθίεο πνπ κπνξνύλ λα δνπλ κόλν «νη θίινη κνπ» Αλέβαζκα αξρείσλ Σύλδεζε κε βάζε δεδνκέλσλ Πνιιά, πνιιά άιια
Γώζε κνπ ηε ζειίδα Φ Φηηάμε κνπ ηε ζειίδα Φ Δθηέιεζε θώδηθα PHP Παξαγσγή HTML Οξίζηε ε ζειίδα Φ Οξίζηε ε ζειίδα Φ Δκθάληζε ζειίδαο
LAMP Linux Apache MySQL PHP Φσηνγξαθία: only_point_five
Σπγγξαθή PHP Τελ γξάθνπκε ζε αξρεία.php Τα αξρεία.php απνζεθεύνληαη ζηνλ server Ο ρξήζηεο δεν έρεη άκεζε πξόζβαζε ζηα αξρεία απηά! Γξάθνπκε ζθέηε HTML Σε νξηζκέλα ζεκεία παπεμβάλλεηαι εθηειέζηκνο θώδηθαο Γηα λα ηξέμεη ζα πεπάζει από ην πξόγξακκα httpd Γελ κηιάκε πιένλ γηα ηνπηθά αξρεία
Γεηα ζνπ θόζκε! <html> <head><title>:)</title></head> <body> <?php echo <p>hello, world!</p> ;?> </body> </html>
<html> <head><title>:)</title></head> <body><p>hello, world!</p></body> </html>
Βαζηθή ζύληαμε Παξεκβνιή θώδηθα Αξρίδεη κε <?php Ή ζπληνκνγξαθία <? Τειεηώλεη κε?> Μπνξνύκε λα παξεκβάιινπκε πνιιέο θνξέο θώδηθα Ο θώδηθαο εθηειείηαη ζεηξηαθά Ζ κία εληνιή κεηά ηελ άιιε Κάζε εληνιή ηειεηώλεη ζε ;
Γεηα ζνπ θόζκε! <html> <head><title> <?php echo :-) ;?> </title></head> <body> <?php echo <p>hello, world!</p> ;?> </body> </html>
<html> <head><title>:)</title></head> <body><p>hello, world!</p></body> </html>
Τππώλνληαο θείκελν echo: Τππώλεη ηελ παξάκεηξν ζην απνηέιεζκα
Interpreter Γελ γίλεηαη compile Τν πξόγξακκα ηξέρεη όπσο δηαβάδεηαη
Μεηαβιεηέο ζηελ PHP Απνζεθεύνπλ κία ηηκή Ννύκεξα, θείκελα, πίλαθεο,... Αξρίδνπλ κε $, αθνινπζεί ην όνομα Τν όλνκα... Αξρίδεη κε γξάκκα ή _ Πεξηέρεη γξάκκαηα, αξηζκνύο, _ Έρεη επαηζζεζία ζε πεδά-θεθαιαία Παξόκνηεο κε C, C++, Java, Pascal,
Μεηαβιεηέο Τηκή κεηαβιεηήο νξίδεηαη κε ηνλ ηειεζηή = $a = 5; Γίλεη ζηελ μεηαβληηή $a ηελ ηιμή 5 Οη κεηαβιεηέο κπνξνύλ λα αλλάξοςν ηηκή Μπνξνύλ λα ρξεζηκνπνηεζνύλ κέζα ζε παξαζηάζεηο
Μεηαβιεηέο <?php $a = Hello, ; $b = world! ; echo $a; echo $b;?> Hello, world!
Αζζελέο ζύζηεκα ηύπσλ Κάζε ηιμή έρεη έλαλ ηύπν int: 5, 9, 34, -18 float: 0.99, 3.14 string: Hello world, Διονύσης boolean: true, false Δεν νξίδνπκε ηύποςρ κεηαβιεηώλ Ο ηύπνο κίαο κεηαβιεηήο κπνξεί λα αιιάμεη Αλάινγα κε ηελ ηηκή πνπ παίξλεη
<?php $a = Hello, ; echo $a; $a = 5; echo $a;?> Τύπνπ string Τύπνπ int Hello, 5
Γπλακηθό ζύζηεκα ηύπσλ Μεηαβιεηέο παίξλνπλ ηύπν ηηκήο Γηεπθόιπλζε ζηε ζπγγξαθή θώδηθα Σθάικαηα σπόνος εκηέλεζηρ αληί ζπληαθηηθά Πην δύζθνια ζηνλ εληνπηζκό Οη μεηαηποπέρ ηύπσλ γίλνληαη αςηόμαηα <?php $a = 5 ; $b = 7; echo $b - $a;?> 2 Μεηαηξέπεηαη ζε int γηα λα γίλεη ε πξάμε
Αιθαξηζκεηηθά Μία ηηκή πνπ είλαη κία ζεηξά από αξηζκνύο, ραξαθηήξεο, γξάκκαηα,... Γειαδή ένα κείμενο Τν κήθνο κπνξεί λα αιιάδεη Γελ ππάξρεη πεξηνξηζκόο κήθνπο Γελ πξόθεηηαη γηα πίλαθεο από ραξαθηήξεο Γελ ππάξρεη δηαθνξεηηθόο ηύπνο ραξαθηήξα θαη αιθαξηζκεηηθνύ Δπηηξέπεηαη ην UTF-8 άκεζα: $a = Χαίρε, κόσμε! ;
Αιθαξηζκεηηθά Διπλά ειζαγυγικά: Πξνθαινύλ αληηθαηαζηάζεηο <?php $a = world ; Hello, world! echo Hello, $a! ;?> Μονά ειζαγυγικά: Γελ πξνθαινύλ αληηθαηαζηάζεηο <?php $a = world ; echo Hello, $a! ; Hello, $a!?> Δμίζνπ γξήγνξα θαη ηα δύν
Σπλέλσζε αιθαξηζκεηηθώλ Με ηνλ ηειεζηή. (ηειεία) Παξάγεη έλα αιθαξηζκεηηθό πνπ είλαη ε παξάζεζε δύν άιισλ Hello,. world Hello, world
Σπλαξηήζεηο αιθαξηζκεηηθώλ Παξέρνληαη έηνηκεο από ηελ PHP: strlen: Υπνινγίδεη κήθνο αιθαξηζκεηηθνύ trim: «Κόβεη» ηα θελά από ηελ αξρή θαη ην ηέινο strpos: Δληνπίδεη έλα αιθαξηζκεηηθό κέζα ζε άιιν strtolower: Μεηαηξέπεη από θεθαιαία ζε πεδά strtoupper: Μεηαηξέπεη από πεδά ζε θεθαιαία str_repeat: Γεκηνπξγεί αιθαξηζκεηηθό κε επαλάιεςε άιινπ αιθαξηζκεηηθνύ θαη πνιιέο άιιεο: http://php.net/strings Χάμηε ηεο όηαλ ηηο ρξεηαζηείηε!
Δηδηθνί ραξαθηήξεο Παξόκνηνη κε C, C++, Java, \n \t Αιιαγή γξακκήο Tab Γνπιεύνπλ κόλν ζε δηπιά εηζαγσγηθά
Τειεζηέο Τελεζηέρ Λειηοςπγία +, -, *, /, % Αξηζκεηηθέο πξάμεηο, &&,! Λνγηθέο πξάμεηο: ή, θαη, όρη ==,!=, <, >, <=, >= Σύγθξηζε ++, -- Αύμεζε, κείσζε. Έλσζε αιθαξηζκεηηθώλ =, +=, -=, *=, /=, %=,.= Αλάζεζε ηηκήο
Τειεζηέο Κώδικαρ Αποηέλεζμα 3 + 5 8 2-9 -7 1 / 2 0.5 5 * 7 35 102 % 5 2 true false true!true false true && true true 3 < 5 true 3!= 3 false Hello., world! Hello, world!
Τειεζηέο $a = 5; echo $a; ++$a; echo $a; --$a; echo $a; 5 6 5
Τη ζα ηππώζνπλ; echo 1 / 2 ; echo 1. 2; $a = 5; echo $a ; $b = 5; echo $b - $b; $c = 5; echo $c. $c; 0.5 12 5 0 $c5
Σύγθξηζε Με ==,!= Ο ηύπνο ησλ ηηκώλ κεηαηξέπεηαη ώζηε λα γίλεη ε ζύγθξηζε 1 == 1 true 1 == 2 false 0 == hello true 1 == 1 true
Σύγθξηζε Ζ ζύγθξηζε αιθαξηζκεηηθώλ γίλεηαη εύθνια θαη ζυζηά: $a = hello ; if ( $a == hello ) { echo $a is hello. ; } else { echo $a is not hello. ; }
if if ( συνθήκη ) { σώμα 1 } else if ( συνθήκη ) { σώμα 2 }... else { σώμα 3 }
if Δθηειεί θώδηθα ςπό ζςνθήκη Παξόκνην κε ην if ηεο C, C++, Java, 1 ε ζπλζήθε αληθήρ; Δθηέιεζε θώδηθα ζώμαηορ if Αιιηώο, 2 ε ζπλζήθε αληθήρ; Δθηέιεζε θώδηθα ζώμαηορ else if ιεο νη ζπλζήθεο τεςδείρ; Δθηέιεζε θώδηθα ζώμαηορ else Τα else if θαη else είλαη πξναηξεηηθά
if if ( $a == 5 ) { echo Hello! ; } else { echo Goodbye! ; }
switch switch ( παράσταση ) { case τιμή1: σώμα 1; break; case τιμή2: σώμα 1; break;... default: εναλλακτικό σώμα }
switch Επιλέγει έλα ζώκα κε βάζε ηελ ηηκή κίαο παξάζηαζεο Παξόκνην κε C, C++, Java, Τα cases μποπούν λα είλαη θαη όσι ζηαθεπέρ Αλ ε παξάζηαζε έρεη ηηκή1 Δθηέιεζε ζώκαηνο 1 Αλ ε παξάζηαζε έρεη ηηκή2 Δθηέιεζε ζώκαηνο2... Αιιηώο Δθηέιεζε ελαιιαθηηθνύ ζώκαηνο Τν default είλαη πξναηξεηηθό
switch switch ( $a ) { case 5: echo a is 5 ; break; case 10: echo a is 10 ; break; case 15: echo a is 15 ; break; default: echo a is neither 5, nor 10, nor 15 ; }
switch Παξάιεςε ηνπ break νδεγεί ζε fall-through Δθηεινύληαη ηα ζώκαηα πνπ αθνινπζνύλ κέρξη ην επόκελν break
switch $a = 10; switch ( $a ) { case 5: echo a is 5. ; case 10: echo a is 10. ; case 15: echo a is 15. ; default: } echo a is neither 5, nor 10, nor 15 ;
a is 10. a is 15. a is neither 5, nor 10, nor 15.
for for ( αρχικοποίηση; συνθήκη; βήμα ) { σώμα }
for for ( αρχικοποίηση; συνθήκη; βήμα ) { σώμα } Ίδην ζε C, C++, Java Δπαλαιακβάλεη έλα ζώκα ζύκθσλα κε θάπνηα ζπλζήθε Αξρηθά ηξέρεη ε απσικοποίηζη Αλ η ζςνθήκη είλαη τεςδήρ, ηειεηώζακε Αλ η ζςνθήκη είλαη αληθήρ, ηξέρεη ην ζώμα Μεηά ην ζώκα ηξέρεη ην βήμα Η ζςνθήκη ελέγσεηαι ξανά, κ.ό.κ.
for for ( $i = 0; $i < 5; ++$i ) { echo Hello, world! ; } Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
while while ( συνθήκη ) { σώμα }
while while ( συνθήκη ) { σώμα } Ίδην ζε C, C++, Java, Δπαλαιακβάλεη έλα ζώκα ζύκθσλα κε θάπνηα ζπλζήθε Αξρηθά ειέγρεηαη ε ζπλζήθε Αλ η ζςνθήκη είλαη τεςδήρ, ηειεηώζακε Αλ η ζςνθήκη είλαη αληθήρ, ηξέρεη ην ζώμα Η ζςνθήκη ελέγσεηαι ξανά, κ.ό.κ.
while $i = 0; while ( $i < 5 ) { echo Hello, world! ; ++$i; } Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
do while do { σώμα } while ( συνθήκη );
do while do { σώμα } while ( συνθήκη ); Ίδην ζε C, C++, Java, Δπαλαιακβάλεη έλα ζώκα ζύκθσλα κε θάπνηα ζπλζήθε Αξρηθά ηξέρεη κία θνξά ην ζώκα Σηε ζπλέρεηα ειέγρεηαη ε ζπλζήθε Αλ η ζςνθήκη είλαη τεςδήρ, ηειεηώζακε Αλ η ζςνθήκη είλαη αληθήρ, ηξέρεη ην ζώμα Η ζςνθήκη ελέγσεηαι ξανά, κ.ό.κ.
do while $i = 0; do { echo Hello, world! ; ++$i; } while ( $i < 0 ); Hello, world!
break Ίδην ζε C, C++, Java, Δκθαλίδεηαη κέζα ζε κία ξνή ειέγρνπ for, foreach, while, do while, switch Γηαθόπηεη ηελ ξνή θαη ζπλερίδεη ακέζσο κεηά Γελ γίλνληαη άιιεο επαλαιήςεηο κεηά ην break
continue Ίδην ζε C, C++, Java, Δκθαλίδεηαη κέζα ζε κία ξνή επαλάιεςεο for, foreach, while, do while Γηαθόπηεη ηελ ξνή θαη ζπλερίδεη ειέγρνληαο ηελ ζπλζήθε Μπνξεί λα γίλνπλ θαη άιιεο επαλαιήςεηο κεηά ην continue
Φεηξηζκόο θνξκώλ Γηα λα πάξνπκε δεδνκέλα από HTTP GET: Μεηαβιεηή $_GET $_GET[ όνομα_παραμέτρου ] Γηα λα πάξνπκε δεδνκέλα από HTTP POST: Μεηαβιεηή $_POST $_POST[ όνομα_παραμέτρου ] Οξίδνληαη απηόκαηα από ηελ PHP
Φεηξηζκόο θνξκώλ input.html: <form action= test.php method= post > </form> <input type= text name= foo /> <input type= submit value= Στείλε />
Φεηξηζκόο θνξκώλ test.php: <p> </p> Πιεθηξνιόγεζεο <?php?>! echo $_POST[ foo ];
Σρόιηα // ε ππόινηπή γξακκή είλαη ζρόιην Τν πνιύ 1 γξακκή $a = 5; // assign $a to be 5 /* ηα πεξηερόκελα είλαη ζρόιην */ 1 ή πεξηζζόηεξεο γξακκέο
Σπλαξηήζεηο function όνομα_συνάρτησης( ορίσματα ) { σώμα; }
Σπλαξηήζεηο Παξόκνηεο κε ζπλαξηήζεηο ζε C, C++, Java, Οξίδνπλ ππν-ξνπηίλεο πνπ θάλνπλ ζπγθεθξηκέλε δνπιεηά Οξίδνληαη κε ηελ ιέμε-θιεηδί function Αθνινπζεί ην όνομα ηεο ζπλάξηεζεο Αθνινπζνύλ ηα νλόκαηα ησλ οπιζμάηυν ζε ( ) ρσξηζκέλα κε θόκκαηα
Δπηζηξνθή ηηκήο Οη ζπλαξηήζεηο επιζηπέθοςν ηηκή κε return Ζ ηηκή επηζηξνθήο ρξεζηκνπνηείηαη όπνπ έγηλε ε θιήζε Δπηζηξνθή ζεκαίλεη ηεπμαηιζμόρ ζπλάξηεζεο Γελ νξίδνπκε ηύπο επηζηξνθήο Γελ είλαη ππνρξεσηηθό
Κιήζε ζπλαξηήζεσλ Καινύληαη νπνπδήπνηε ρξεζηκνπνηώληαο ην όλνκα Αθνινπζνύλ νη ηιμέρ ησλ νξηζκάησλ ζε ( ) ρσξηζκέλεο κε θόκκαηα Σεηξά νξηζκάησλ έρεη ζεκαζία Πξώηε ηηκή Πξώην όξηζκα Γεύηεξε ηηκή Γεύηεξν όξηζκα θ.ό.θ. Κιήζε ρσξίο επηζηξνθή: όνομα_συνάρτησης( τιμές_ορισμάτων ); Κιήζε κε επηζηξνθή: $a = όνομα_συνάρτησης( τιμές_ορισμάτων );
Οξίζκαηα Δίνοςν πιεξνθνξίεο ζε κία ζπλάξηεζε Αθνινπζνύλ ίδηα νλνκαηνινγία κε κεηαβιεηέο Αξρίδνπλ κε $, αθνινπζεί ην όνομα Τν όλνκα... Αξρίδεη κε γξάκκα ή _ Πεξηέρεη γξάκκαηα, αξηζκνύο, _ Έρεη επαηζζεζία ζε πεδά-θεθαιαία
Σπλαξηήζεηο Όνομα ζςνάπηηζηρ function add( $a, $b ) { $c = $a + $b; return $c; } Οπιζμόρ ζςνάπηηζηρ echo The sum of 3 and 5:. add( 3, 5 ); Κλήζη ζςνάπηηζηρ
Σπλαξηήζεηο function add( $a, $b ) { $c = $a + $b; return $c; } Ππώηο όπιζμα Δεύηεπο όπιζμα Οπίζμαηα Τιμέρ οπιζμάηυν echo The sum of 3 and 5:. add( 3, 5 ); Τιμή ππώηος οπίζμαηορ Τιμή δεύηεπος οπίζμαηορ
Σπλαξηήζεηο function add( $a, $b ) { $c = $a + $b; return $c; } Τιμή επιζηποθήρ echo The sum of 3 and 5:. add( 3, 5 ); Παίπνει αςηή ηη θέζη
Σπλαξηήζεηο function avg( $a, $b ) { $c = $a + $b; return $c / 2; } echo The average of 3, 5:. avg( 3, 5 ); echo \n ; echo The average of 1, 9:. avg( 1, 9 );
Σπλαξηήζεηο function is_prime( $a ) { for ( $i = 2; $i < $a; ++$i ) { if ( $a % $i == 0 ) { return false; } } return true; } if ( is_prime( 5 ) ) { echo 5 is a prime number. ; }
Πξναηξεηηθά νξίζκαηα Μπνξνύλ λα είλαη: Τα ηελεςηαία κίαο ζπλάξηεζεο ζα ζέινπκε Οξίδνπκε κία πποεπιλεγμένη ηηκή κε ην = κεηά ην όλνκα ηνπ νξίζκαηνο
Πξναηξεηηθά νξίζκαηα Όλα ηα οπίζμαηα πποαιπεηικά function makecoffee ( $type = frappe, $milk = true ) { } $str = Making a cup of $type ; if ( $milk ) { $str.= with milk ; } $str.=.\n ; return $str; echo makecoffee( espresso );
Πξναηξεηηθά νξίζκαηα 2 ο όπιζμα πποαιπεηικό function makecoffee ( $type, $milk = true ) { } $str = Making a cup of $type ; if ( $milk ) { $str.= with milk ; } $str.=.\n ; return $str; echo makecoffee( espresso );
Πξναηξεηηθά νξίζκαηα function makecoffee ( $type = frappe, $milk ) { } $str = Making a cup of $type ; if ( $milk ) { $str.= with milk ; } $str.=.\n ; return $str; echo makecoffee( espresso );
Δγθαηαζηήζηε Apache + PHP! Ήξζε ε ώξα λα ζηήζεηε έλαλ server ζηνλ ππνινγηζηή ζαο Δγθαηαζηήζηε ηνλ Apache από ην http://apache.org/ Δγθαηαζηήζηε ηελ PHP από ην http://php.net/ Πειπαμαηιζηείηε! Θα ηα ρξεηαζηείηε γηα ηελ 4 ε εξγαζία!
Μάζακε Δηζαγσγή ηεο γιώζζαο PHP ζε αξράξην επίπεδν: Βαζηθή ζύληαμε Σπλδπαζκόο PHP κε άιιεο γιώζζεο Μεηαβιεηέο Αιθαξηζκεηηθά Τειεζηέο if, else, switch for, while Σπλαξηήζεηο Φεηξηζκόο θνξκώλ
Σπγραξεηήξηα! Μάζαηε PHP. Μπνξείηε λα κάνεηε δςναμική ηελ πξώηε ζαο ζειίδα!
Τελ επόκελε θνξά... Δκβάζπλζε ζηελ PHP Πίλαθεο θαη ιεμηθά foreach Γηαρείξηζε αξρείσλ Ζκεξνκελίεο Γηαρσξηζκόο θώδηθα ζε πνιιά αξρεία Αλέβαζκα αξρείσλ από ηνλ ρξήζηε Μπηζθόηα θαη ζύλνδνη Απνζηνιή e-mail