PHP: Οδηγός Γλώσσας Προγραμματισμού για Web Development
Η PHP (PHP: Hypertext Preprocessor) είναι μια server-side γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως στην ανάπτυξη δυναμικών ιστοσελίδων, APIs και web εφαρμογών. Ο κώδικας PHP εκτελείται στον server και μπορεί να παράγει HTML, JSON ή άλλες μορφές απόκρισης.
Αυτός ο οδηγός λειτουργεί ως PHP Cheat Sheet: συγκεντρώνει βασική σύνταξη, μεταβλητές, τύπους δεδομένων, arrays, συνθήκες, loops, συναρτήσεις, OOP, φόρμες, sessions, αρχεία και σύνδεση με βάσεις δεδομένων.
Βασικά χαρακτηριστικά της PHP
- Εκτελείται κυρίως στον server και παράγει δυναμικό περιεχόμενο.
- Μπορεί να ενσωματωθεί σε HTML.
- Υποστηρίζει procedural και object-oriented προγραμματισμό.
- Συνδέεται με βάσεις δεδομένων όπως MySQL και PostgreSQL.
- Χρησιμοποιείται σε CMS όπως το WordPress και σε frameworks όπως Laravel και Symfony.
- Υποστηρίζει APIs, sessions, cookies, διαχείριση αρχείων και επικοινωνία μέσω HTTP.
PHP – Πρώτο πρόγραμμα
Ο PHP κώδικας τοποθετείται ανάμεσα στα tags <?php και ?>. Σε αρχεία που περιέχουν αποκλειστικά PHP, συνήθως παραλείπουμε το τελικό tag ?> για να αποφύγουμε ανεπιθύμητα κενά ή output.
<?php
echo "Hello, GrCode Club!";
Εκτέλεση PHP
Απαιτείται εγκατάσταση της PHP ή χρήση τοπικού περιβάλλοντος ανάπτυξης που την περιλαμβάνει. Μπορείτε να ελέγξετε την εγκατάσταση και να εκτελέσετε ένα αρχείο από το Terminal.
php --version
# Εκτέλεση PHP αρχείου
php index.php
# Εκκίνηση ενσωματωμένου development server
php -S localhost:8000
Ο ενσωματωμένος server προορίζεται για τοπική ανάπτυξη και δοκιμές, όχι για production hosting.
Frameworks
Τα PHP frameworks παρέχουν δομή, κοινά εργαλεία και έτοιμους μηχανισμούς για routing, validation, database access και ασφάλεια, ώστε η ανάπτυξη εφαρμογών να γίνεται πιο οργανωμένα.
| Κατηγορία | Περιγραφή |
|---|---|
| Frameworks | Χρήση |
| Vanilla | Ανάπτυξη server-side ιστοσελίδων χωρίς τη χρήση frameworks, διαχείριση βάσεων δεδομένων |
| Laravel | Δημοφιλές PHP framework με ενσωματωμένα εργαλεία για ανάπτυξη εφαρμογών, όπως ORM και Blade templating |
| Symfony | Ισχυρό framework για τη δημιουργία μεγάλων και σύνθετων εφαρμογών με έμφαση στην επαναχρησιμοποίηση |
| CodeIgniter | Ελαφρύ PHP framework που προσφέρει απλότητα και γρήγορη ανάπτυξη εφαρμογών |
| Phalcon (Laminas) | Framework για ανάπτυξη εφαρμογών επιχειρηματικού επιπέδου με επεκτασιμότητα και ασφάλεια |
| CakePHP | PHP framework που επικεντρώνεται στην ταχεία ανάπτυξη εφαρμογών με χρήση MVC αρχιτεκτονικής |
| Yii | Γρήγορο, ασφαλές PHP framework για ανάπτυξη web εφαρμογών με υψηλή απόδοση |
| Phalcon | PHP framework γραμμένο σε C, προσφέροντας εξαιρετικά υψηλή απόδοση |
| FuelPHP | Flexibly structured PHP framework που υποστηρίζει HMVC αρχιτεκτονική |
| Slim | Μικρό, ελαφρύ PHP framework για τη δημιουργία απλών και ταχέων web εφαρμογών και APIs |
| Laravel Lumen | Micro-framework βασισμένο στο Laravel, σχεδιασμένο για τη δημιουργία ταχύτατων microservices |
| PHPixie | Ελαφρύ PHP framework σχεδιασμένο για υψηλή απόδοση και εύκολη ανάπτυξη |
| Fat-Free Framework (F3) | Μικρό και ισχυρό PHP framework που προωθεί τη χρήση ελάχιστου κώδικα |
| Kohana | PHP framework που προσφέρει υψηλή ασφάλεια και επεκτασιμότητα με χρήση HMVC αρχιτεκτονικής |
| Flight | Ελαφρύ micro-framework για την ανάπτυξη RESTful web εφαρμογών και APIs |
| BitFrame | Micro-framework για PHP με έμφαση στη δημιουργία γρήγορων και ευέλικτων εφαρμογών |
| Mezzio | PHP framework από το Laminas project, εστιασμένο στην ανάπτυξη middleware applications |
| Yii2 | Η δεύτερη έκδοση του Yii framework με βελτιώσεις στην ταχύτητα και την ασφάλεια |
| Nette | PHP framework που προωθεί την ασφάλεια και τη χρήση μοντέρνων προγραμματιστικών πρακτικών |
| Laravel Zero | Minimalistic PHP framework για την ανάπτυξη CLI (Command-Line Interface) εφαρμογών |
| Geddy | Minimalistic PHP framework που ακολουθεί την αρχιτεκτονική MVC για απλές web εφαρμογές |
| Orchestra Platform | PHP framework για τη δημιουργία enterprise-level applications με εύκολη διαχείριση |
Στοιχεία της PHP και πληροφορίες περιβάλλοντος
Η PHP_VERSION εμφανίζει την έκδοση της PHP. Η phpversion() επιστρέφει την έκδοση runtime, ενώ η ini_get() διαβάζει συγκεκριμένες ρυθμίσεις της PHP.
<?php
echo "PHP Version: " . PHP_VERSION . PHP_EOL;
echo "Memory Limit: " . ini_get("memory_limit") . PHP_EOL;
echo "Upload Max Filesize: " . ini_get("upload_max_filesize") . PHP_EOL;
Έξοδος κειμένου (Output)
Οι βασικοί τρόποι εμφάνισης δεδομένων είναι οι echo και print. Η var_dump() και η print_r() είναι ιδιαίτερα χρήσιμες για debugging.
echo και print
<?php
echo "Hello, world!";
echo "PHP", " Programming";
print "Hello from print";
var_dump() και print_r()
<?php
$number = 42;
$user = ["name" => "Nikos", "active" => true];
var_dump($number);
print_r($user);
Μεταβλητές και σταθερές
Οι μεταβλητές ξεκινούν με το σύμβολο $. Τα ονόματά τους είναι case-sensitive. Η PHP είναι dynamically typed, επομένως ο τύπος μιας μεταβλητής καθορίζεται από την τιμή που περιέχει.
Δήλωση μεταβλητών
<?php
$name = "GrCode Club";
$age = 25;
$price = 12.99;
$isDeveloper = true;
echo $name;
echo $age;
echo $price;
echo $isDeveloper;
Κανόνες ονοματοδοσίας
- Το όνομα ξεκινά με
$και στη συνέχεια γράμμα ή underscore (_). - Δεν μπορεί να ξεκινά με αριθμό.
- Μπορεί να περιέχει γράμματα, αριθμούς και underscore.
- Τα
$nameκαι$Nameείναι διαφορετικές μεταβλητές.
Έλεγχος μεταβλητών: isset(), empty(), unset()
<?php
$name = "Nikos";
var_dump(isset($name)); // true
var_dump(empty($name)); // false
unset($name);
var_dump(isset($name)); // false
Η isset() επιστρέφει false όταν η μεταβλητή δεν έχει οριστεί ή είναι null. Η empty() ελέγχει αν η τιμή θεωρείται κενή, όπως "", 0, "0", false, null ή κενός πίνακας. Η unset() αφαιρεί τη μεταβλητή.
Σταθερές με define() και const
<?php
define("SITE_NAME", "GrCode Club");
const MAX_USERS = 100;
echo SITE_NAME;
echo MAX_USERS;
Τύποι δεδομένων (Data Types)
| Τύπος | Περιγραφή | Παράδειγμα |
|---|---|---|
string | Κείμενο | "Hello" |
int | Ακέραιος αριθμός | 25 |
float | Πραγματικός αριθμός | 3.14 |
bool | Λογική τιμή | true |
array | Συλλογή τιμών | [1, 2, 3] |
object | Στιγμιότυπο κλάσης | new User() |
null | Απουσία τιμής | null |
Έλεγχος και μετατροπή τύπων
<?php
$value = "42";
echo gettype($value); // string
$number = (int) $value; // 42
$decimal = (float) "3.14";
$text = (string) 100;
var_dump($number, $decimal, $text);
Τελεστές (Operators)
Αριθμητικοί τελεστές
<?php
$a = 10;
$b = 3;
echo $a + $b; // 13
echo $a - $b; // 7
echo $a * $b; // 30
echo $a / $b; // 3.333...
echo $a % $b; // 1
echo $a ** $b; // 1000
Σύγκριση και λογικοί τελεστές
| Τελεστής | Περιγραφή |
|---|---|
== | Ισότητα με type juggling |
=== | Ίδια τιμή και ίδιος τύπος |
!=, !== | Ανισότητα / αυστηρή ανισότητα |
>, < | Μεγαλύτερο / μικρότερο |
&&, ||, ! | Λογικό ΚΑΙ, Ή, ΟΧΙ |
. | Συνένωση strings |
?? | Null coalescing operator |
Για συγκρίσεις όπου έχει σημασία ο τύπος, προτιμήστε τους αυστηρούς τελεστές === και !==.
Είσοδος δεδομένων και φόρμες HTML
Η PHP λαμβάνει δεδομένα από φόρμες μέσω των superglobals $_GET και $_POST. Τα δεδομένα εισόδου πρέπει πάντα να ελέγχονται και να επικυρώνονται πριν χρησιμοποιηθούν.
GET και POST
Παράδειγμα HTML φόρμας με μέθοδο POST:
<form method="POST" action="process.php">
<label for="name">Όνομα:</label>
<input type="text" id="name" name="name" required>
<button type="submit">Αποστολή</button>
</form>
Ανάγνωση και ασφαλής εμφάνιση της τιμής στην PHP:
<?php
$name = $_POST["name"] ?? "";
if (is_string($name)) {
$name = trim($name);
echo htmlspecialchars($name, ENT_QUOTES, "UTF-8");
}
Η htmlspecialchars() κωδικοποιεί ειδικούς χαρακτήρες κατά την εμφάνιση δεδομένων σε HTML και βοηθά στην αποτροπή XSS. Δεν αντικαθιστά την επικύρωση ή την κατάλληλη προστασία ανάλογα με το context.
Δομές ελέγχου (if, elseif, else, match)
if / elseif / else
<?php
$grade = 85;
if ($grade >= 90) {
echo "Excellent";
} elseif ($grade >= 70) {
echo "Good";
} else {
echo "Needs improvement";
}
switch
<?php
$day = 2;
switch ($day) {
case 1:
echo "Monday";
break;
case 2:
echo "Tuesday";
break;
default:
echo "Unknown day";
}
match (PHP 8+)
Η match είναι έκφραση που επιστρέφει τιμή, χρησιμοποιεί αυστηρή σύγκριση και δεν χρειάζεται break.
<?php
$status = 200;
$message = match ($status) {
200 => "OK",
404 => "Not Found",
500 => "Server Error",
default => "Unknown Status",
};
echo $message;
Βρόχοι (Loops)
while
<?php
$i = 1;
while ($i <= 5) {
echo $i . PHP_EOL;
$i++;
}
for
<?php
for ($i = 1; $i <= 5; $i++) {
echo $i . PHP_EOL;
}
foreach
<?php
$languages = ["PHP", "Python", "JavaScript"];
foreach ($languages as $language) {
echo $language . PHP_EOL;
}
Η break τερματίζει έναν βρόχο, ενώ η continue παραλείπει την τρέχουσα επανάληψη.
Πίνακες (Arrays)
Τα arrays της PHP είναι ordered maps: μπορούν να λειτουργούν ως αριθμητικές λίστες ή ως associative arrays με κλειδιά και τιμές.
Indexed array
<?php
$languages = ["PHP", "Python", "JavaScript"];
echo $languages[0];
$languages[] = "Java";
print_r($languages);
Associative array
<?php
$user = [
"name" => "Nikos",
"role" => "Developer",
"active" => true
];
echo $user["name"];
echo $user["role"];
Χρήσιμες συναρτήσεις arrays
<?php
$numbers = [5, 2, 8, 1];
echo count($numbers); // Πλήθος στοιχείων
sort($numbers); // Αύξουσα ταξινόμηση
print_r($numbers);
var_dump(in_array(5, $numbers)); // Έλεγχος ύπαρξης
Strings (Συμβολοσειρές)
Οι συμβολοσειρές αποθηκεύουν κείμενο. Η PHP παρέχει συναρτήσεις για αναζήτηση, αντικατάσταση, διαχωρισμό και μορφοποίηση κειμένου.
<?php
$text = "GrCode Club";
echo strlen($text); // Μήκος σε bytes
echo strtoupper($text); // Κεφαλαία
echo strtolower($text); // Πεζά
echo str_replace("Club", "Community", $text);
echo trim(" PHP "); // Αφαίρεση κενών
echo substr($text, 0, 6); // Τμήμα κειμένου
Η strlen() μετρά bytes, όχι απαραίτητα χαρακτήρες Unicode. Για πολυγλωσσικό κείμενο με UTF-8 χρησιμοποιήστε συναρτήσεις όπως mb_strlen(), εφόσον είναι ενεργό το extension mbstring.
Συναρτήσεις (Functions)
Οι συναρτήσεις οργανώνουν τον κώδικα σε επαναχρησιμοποιήσιμα τμήματα. Μπορούν να δέχονται παραμέτρους, να έχουν προεπιλεγμένες τιμές και να επιστρέφουν αποτελέσματα.
<?php
function greet(string $name): string {
return "Hello, " . $name . "!";
}
echo greet("GrCode Club");
Προεπιλεγμένες παράμετροι και return
<?php
function calculateTotal(float $price, int $quantity = 1): float {
return $price * $quantity;
}
$total = calculateTotal(12.5, 3);
echo $total;
Κλάσεις και Αντικείμενα (OOP)
Η PHP υποστηρίζει αντικειμενοστραφή προγραμματισμό. Μια κλάση ορίζει properties και methods, ενώ το αντικείμενο είναι ένα στιγμιότυπο της κλάσης.
<?php
class Developer {
public function __construct(
private string $name,
private string $language
) {}
public function introduce(): string {
return $this->name . " uses " . $this->language;
}
}
$developer = new Developer("Dimitris", "PHP");
echo $developer->introduce();
Τα public, protected και private ορίζουν την ορατότητα των μελών. Το $this αναφέρεται στο τρέχον αντικείμενο.
Κληρονομικότητα και Interfaces
Inheritance με extends
<?php
class Animal {
public function speak(): string {
return "Animal sound";
}
}
class Dog extends Animal {
public function speak(): string {
return "Woof!";
}
}
$dog = new Dog();
echo $dog->speak();
Interface
<?php
interface Logger {
public function log(string $message): void;
}
class FileLogger implements Logger {
public function log(string $message): void {
echo $message;
}
}
$logger = new FileLogger();
$logger->log("Application started");
Εξαιρέσεις (Exceptions)
Οι εξαιρέσεις επιτρέπουν τον χειρισμό σφαλμάτων κατά την εκτέλεση με τις εντολές try, catch και finally.
<?php
try {
$number = 0;
if ($number === 0) {
throw new InvalidArgumentException("Ο αριθμός δεν μπορεί να είναι μηδέν.");
}
echo 100 / $number;
} catch (InvalidArgumentException $error) {
echo $error->getMessage();
} finally {
echo " Η διαδικασία ολοκληρώθηκε.";
}
Sessions και Cookies
Τα sessions αποθηκεύουν δεδομένα κατάστασης στον server για έναν χρήστη. Τα cookies αποθηκεύονται στον browser. Οι ρυθμίσεις cookie πρέπει να λαμβάνουν υπόψη HTTPS, HttpOnly, SameSite και τις απαιτήσεις ασφάλειας της εφαρμογής.
Session
<?php
session_start();
$_SESSION["username"] = "Nikos";
echo $_SESSION["username"];
Cookie
Το cookie πρέπει να οριστεί πριν σταλεί οποιοδήποτε HTML output ή άλλο περιεχόμενο στον browser.
<?php
setcookie("theme", "dark", [
"expires" => time() + 3600,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "Lax"
]);
Αρχεία (File Handling)
Η PHP παρέχει συναρτήσεις για ανάγνωση, εγγραφή και έλεγχο αρχείων. Πρέπει να ελέγχετε αν οι λειτουργίες ολοκληρώθηκαν επιτυχώς και να χειρίζεστε κατάλληλα τα paths και τα δικαιώματα πρόσβασης.
Εγγραφή σε αρχείο
<?php
$content = "Hello, GrCode Club!" . PHP_EOL;
file_put_contents("example.txt", $content);
Ανάγνωση αρχείου
<?php
$content = file_get_contents("example.txt");
if ($content !== false) {
echo htmlspecialchars($content, ENT_QUOTES, "UTF-8");
}
Βάσεις δεδομένων με PDO
Το PDO παρέχει ενιαίο interface για σύνδεση με υποστηριζόμενες βάσεις δεδομένων. Χρησιμοποιείτε prepared statements για τιμές που προέρχονται από χρήστες, ώστε να αποφεύγετε SQL injection.
<?php
$pdo = new PDO(
"mysql:host=localhost;dbname=app;charset=utf8mb4",
"db_user",
"db_password",
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$stmt = $pdo->prepare("SELECT id, name FROM users WHERE email = :email");
$stmt->execute(["email" => "user@example.com"]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
Τα στοιχεία σύνδεσης είναι ενδεικτικά. Σε πραγματική εφαρμογή αποθηκεύστε τα credentials με ασφαλή τρόπο και μην τα εκθέτετε στον πηγαίο κώδικα ή σε δημόσιο repository.
Χρήσιμες συναρτήσεις PHP – Γρήγορη αναφορά
| Συνάρτηση | Χρήση |
|---|---|
echo, print | Εμφάνιση εξόδου. |
var_dump() | Έλεγχος τύπου και τιμής. |
isset() | Έλεγχος αν μεταβλητή έχει οριστεί και δεν είναι null. |
empty() | Έλεγχος αν τιμή θεωρείται κενή. |
count() | Πλήθος στοιχείων array. |
strlen(), mb_strlen() | Μήκος string σε bytes / χαρακτήρες. |
explode(), implode() | Διαχωρισμός και ένωση strings. |
trim() | Αφαίρεση κενών από αρχή και τέλος. |
htmlspecialchars() | Κωδικοποίηση ειδικών χαρακτήρων για HTML output. |
json_encode(), json_decode() | Μετατροπή σε και από JSON. |
file_get_contents(), file_put_contents() | Ανάγνωση και εγγραφή αρχείων. |
header() | Αποστολή HTTP headers. |
Επίσημη τεκμηρίωση PHP
Για αναλυτικές πληροφορίες σχετικά με τη σύνταξη, τις συναρτήσεις και τα extensions της PHP, συμβουλευτείτε το επίσημο PHP Manual.