PHP

DVOP WBB


Bc. Matěj Cajthaml — SSPŠ

©

PHP

O PHP

  • PHP: Hypertext Preprocessor
    • rekurzivní zkratka
  • skriptovací jazyk
  • dynamicky typovaný
  • zejména na webu, ale i v příkazové řádce
  • multiplatformní (až na konečný počet výjimek)
  • používá většina internetu

Ukázka

<?php
$name = "Bc. Matěj Cajthaml";

echo "Ahoj, já jsem $name!";
?>

Za čím asi stojí úspěch PHP?

Nasazení

  • podporuje většina hostingů
  • velmi jednoduchá instalace
  • velmi jednoduchá konfigurace
  • velmi jednoduchá správa

Knihovny/frameworky pro PHP

  • phpBB
  • WordPress
  • Laravel
  • Symfony
  • Nette
  • ...

Výhody a nevýhody

  • rychlý vývoj
  • snadná správa
  • velká komunita
  • velká a dobrá dokumentace
  • velké množství knihoven
  • dobrá licence
  • nekonzistnetní jména funkcí
  • mnoho zastaralých funkcí a knihoven
  • kontext závislý na požadavcích
  • velmi velká šance zranitelností

Spouštění ve škole

  • vlastní hosting
  • pískoviště (omezené volání, není web)
  • vytvoření serveru pomocí: php -S localhost:8000
    • (servuje aktuální adresář)

Zápis

  • PHP se zapisuje do <?php ... ?>
  • výstup se vypisuje pomocí echo či dalších funkcí
  • příkazy končí středníkem
  • blok kódu se může na stránce opakovat
  • blok kódu nemusí končit uvnitř bloku a může pokračovat mimo něj

Části

  • klasicky se používají proměnné a funkce
  • velmi podobné JavaScriptu
  • proměnné začínají $
  • funkce se volají function()
    • někdy je možné vynechat závorky

Proměnné

<?php
$name = "Bc. Matěj Cajthaml";

echo "Ahoj, já jsem $name!";
?>

Stringové akce

<?php
$name = "Bc. Matěj Cajthaml";

$message1 = "Ahoj, já jsem $name!";
$message2 = 'Ahoj, já jsem $name!';
$message3 = "Ahoj, já jsem " . $name . "!";

echo $message1;
echo $message2;
echo $message3;
?>

Funkce

<?php
$name = "Bc. Matěj Cajthaml";

$length = strlen($name);

echo "Ahoj, já jsem $name a moje jméno má $length písmen!";
?>

Podmínky

<?php
$page = "index";

if ($page == "index") {
    echo "Ahoj, já jsem index!";
} else if ($page == "about") {
    echo "Ahoj, já jsem about!";
} else {
    echo "Ahoj, já jsem něco jiného!";
}
?>

Cykly

<?php
for ($i = 0; $i < 10; $i++) {
    echo "$i ";
}


echo "\n";


$i = 0;
while ($i < 10) {
    echo "$i ";
    $i++;

    if ($i == 5) {
        break;
    }
}


echo "\n";


$i = 5;
do {
    echo "$i ";
    $i++;
} while ($i < 13);
?>

Vlastní funkce

<?php
function sayHello($name) {
    echo "Ahoj, já jsem $name!";
}

sayHello("Bc. Matěj Cajthaml");


function square($number) {
    return $number * $number;
}

echo square(5);


function sum($a, $b, $c = 0) {
    return $a + $b + $c;
}

echo sum(1, 2);
echo sum(1, 2, 3);
?>

Fibonacciho posloupnost

Napište funkci, která vypíše prvních 10 členů Fibonacciho posloupnosti.

F0 = 0

F1 = 1

Fn = Fn-1 + Fn-2

Pole

  • PHP má několik typů polí
  • pole jsou indexované od 0
  • pole mohou obsahovat různé typy
  • pole mohou obsahovat i jiná pole

  • indexované pole
  • asociativní pole
  • objektové pole

Indexované pole

<?php
$names = array("Matěj", "Cajthaml");

echo $names[0];
echo $names[1];
echo $names[2];

for ($i = 0; $i < count($names); $i++) {
    echo $names[$i];
}

foreach ($names as $name) {
    echo $name;
}
?>

Asociativní pole

<?php
$person = array(
    "name" => "Matěj",
    "surname" => "Cajthaml",
    "age" => 18
);

echo $person["name"];
echo $person["surname"];
echo $person["age"];

foreach ($person as $key => $value) {
    echo "$key: $value";
}

foreach ($person as $value) {
    echo $value;
}
?>

Objektové pole

<?php
$person = (object) array(
    "name" => "Matěj",
    "surname" => "Cajthaml",
    "age" => 18
);

echo $person->name;
echo $person->surname;
echo $person->age;

foreach ($person as $key => $value) {
    echo "$key: $value";
}

foreach ($person as $value) {
    echo $value;
}
?>

Výpisy

<?php
$string = "(((PHP je skvělý jazyk)HP je skvělý jazyk)HP je skvělý jazyk)HP je skvělý jazyk!";
$array = array(
    array(
        array(
            "PHP je skvělý jazyk"
        ),
        "je",
        "skvělý",
        "jazyk"
    ), 
    "je", "skvělý", "jazyk");

echo $string;
echo $array;

print_r($array);
var_dump($array);

echo $string . $array;
?>

Super globální proměnné

<?php
echo $_SERVER["HTTP_HOST"];
echo $_SERVER["REQUEST_URI"];
echo $_SERVER["REQUEST_METHOD"];

echo $_GET["name"]; // Query parametry, např. ?name=Matěj
echo $_POST["name"]; // Formuláře s metodou POST

echo $_COOKIE["name"]; // Cookies
echo $_SESSION["name"]; // Session
echo $_FILES["name"]; // Uploadované soubory
echo $_ENV["name"]; // Proměnné prostředí
?>

Použití s HTML

<html>
    <head>
        <title><?php echo "Ahoj"; ?></title>
    </head>
    <body>
        <?php
            $name = "Bc. Matěj Cajthaml";
        ?>
        <h1>Ahoj, já jsem <?php echo $name; ?>!</h1>
    
        <?php
            $cats = array("Yoko", "Bambi", "Moopy");
        ?>

        <ul>
            <?php foreach ($cats as $cat) { ?>
                <li><?php echo $cat; ?></li>
            <?php } ?>
        </ul>
    </body>
</html>

Formuláře

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST["name"];
    $surname = $_POST["surname"];

    echo "Ahoj, já jsem $name $surname!";
}

?>

<form method="POST">
    <input type="text" name="name" placeholder="Jméno">
    <input type="text" name="surname" placeholder="Příjmení">
    <input type="submit" value="Odeslat">
</form>

Další

  • Připojení k databázi
  • Práce se soubory

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/