PHP 

pagrindai

Parengė: Martynas Kašelionis

From zero to hero

Apie PHP

PHP – plačiai paplitusi dinaminė interpretuojama (server side) skriptų rašymo kalba (en: Hypertext Preprocessor), sukurta 1995 m. ir specialiai pritaikyta interneto svetainių kūrimui.

 

PHP sintaksė panaši į daugelį struktūrinių kalbų, ypač į C bei Perl.

 

 

 

Kaip veikia PHP?

Kaip veikia PHP?

Serveris grąžina atsakymą, gautą iš PHP:

  • HTML
  • JSON
  • Tekstas
  • kt.

Serveris

Serveris

WEB serveris:

  • Apache
  • Nginx

 

Duomenų bazės serveris:

  • MariaDB
  • MySQL
  • Oracle


PHP interpretatorius

Darbo aplinka

Programavimo įrankiai

  • Kodo redaktoriai:
  • SublimeText
  • Atom
  • Visual Studio code
  • ...
  • IDE:
  • PHP storm
  • ...

Kodo vykdymas

  • <?php  ?>
  • <?  ?>
  • <% %>

 

 

 

Išvedimas

<?php 


echo 'Sveikas pasauli';  // Išvedimas galimas ir su print arba print_r.


Dažnai programavimas prasideda, nuo Hello world išvedimo kompiuterio ekrane.

Tačiau, kartais čia pat ir baigiasi :)

Komentarai

  • Vienos eilutės komentarai:
    • // Vienos eilutės komentaras
    • # Kitoks vienos eilutės komentaras
  • Multiline komentaras:

      /*

      Kelių eilučių komentaras

      */

Kintamieji

  • Kintamieji pradedami $ ženklu. Po šio ženklo seka kintamojo vardas.
<?php
$vardas = 'Vardenis';
$Pavarde = 'Pavardenis';
echo "$vardas, $Pavarde";      // išves: "Vardenis, Pavardenis"

$4preke = 'raketa';     // klaida; kintamojo vardas, negali prasidėti skaičiumi
$_4preke = 'preke';    // vardas teisingas

Case sensitive: $suma ≠ $Suma

String (eilutė)

<?php
$vardas= "Martynas"; // simbolių rinkinys

String. Jungimo būdai

String. Viengubos kabutės

<?php
$kaina = 200;
echo ’Šokolado kaina: $kaina';
// Šokolado kaina: $kaina;

String. Dvigubos kabutės

<?php
$kaina = 200;
echo “Šokolado kaina: $kaina”;
// Šokolado kaina: 200;

String. Escape

<?php

$kaina = 200;

echo “Šokolado kaina: \$kaina”;

// Šokolado kaina: $kaina;

String. Escape

<?php

$kaina = 200;

echo “Šokolado kaina: “ $kaina “ ”;

// Sintaksės klaida

String funkcijos

<?php

$eilute = " labas rytas, Lietuva! ";
$ilgis = strlen($eilute);

Funkcija strlen grąžina eilutės simbolių skaičių. Šiuo atveju - 23.

String funkcijos

<?php

$eilute = " labas rytas, Lietuva! ";
$eilute_be_tarpu = trim($eilute);

Funkcija trim grąžina eilutę be tarpų pradžioje ir pabaigoje.

String funkcijos

<?php

$didziosios_raides = strtoupper($eilute);

Funkcija strtoupper - pakeičia visas raides į didžiąsias

String funkcijos

<?php

$mazosios_raides = strtolower($eilute);

Funkcija strtolower - pakeičia visas raides į mažąsias

String funkcijos

<?php

$pavadinimas = ucfirst($eilute);

Funkcija ucfirst - pakeičia TIK pirmąją eilutės raidę į didžiąją

String funkcijos

<?php

$tekstas = str_replace("Lietuva", "Latvija", $eilute);

Funkcija str_replace paima kintamąjį $eilute ir pakeičia visus tekste esančius žodžius "Lietuva" į "Latvija". Tiksliau, į tokius parametrus kuriuos mes nurodome.

String funkcijos

<?php

$zodis = substr($eilute, 1, 5);

Funkcija substr grąžina žodžio dalį - šiuo atveju penkis simbolius, pradedant nuo antrojo. 

String funkcijos

<?php

$text   = "\t\tPHP yra puiki programavimo kalba :) ...  ";

$trimmed = trim($text);

Funkcija trim pašalina tarpus string pradžioje ir pabaigoje.

Skaičiai

  • Sveikieji skaičiai (Integer)
  • Slankusis kablelis (Float)

Matematinės operacijos

$a = 10;

$b = $a + 1;  // 11

$c = $a - 1;  // 9

$d = $a * 5;  // 50

$e = $a / 2;  // 5

$f = $a % 3;  // 1

Number funkcijos

echo abs(5);  // abosoliutus skaičius

echo pow(2, 8); //kėlimas laipsniu

echo sqrt(9); // kvadratinė šaknis

echo round(5.045, 2); // apvalinimas

echo ceil(4.3);    // 5  (apvalinimas iki sekančio sveiko skaičiaus)

echo floor(4.3);   // 4 (apvalinimas iki žemesnio sveiko skaičiaus)


// Atsitiktinis skaičius

echo rand() . "\n";

echo rand() . "\n";

echo rand(5, 15);

Daugiau matematinių funkcijų:

https://www.php.net/manual/en/ref.math.php

Skaičiai

Duomenų tipo tikrinimas

echo is_int(23); // true

echo is_float(27.25); // true

echo is_numeric(6); // true

var_dump

Funkcija var_dump išveda informaciją apie kintamąjį

<?php

$b = 3.1;
$c = true;
var_dump($b, $c);

?>
//output:

float(3.1)
bool(true) 

Didinimas vienetu (Icrement)

Masyvai

Masyvas (ang. array)  yra duomenų struktūra, leidžianti saugoti tam tikras reikšmes vienoje vietoje.

Masyvai

Masyvai

 

  • $cars = [ "Volvo", "BMW", "Toyota” ];
  • $stats = [ ”flights” => 35, ”hotels” => 37 ];
  • $arr = [];
  • $arr[] = “Labas”;
  • $arr[] = “Pasauli”;

Masyvai

Masyvų funkcijos

<?php

$students = ['Karolis', 'Tadas', 'Ieva'];

echo count($students); // suskaičiuoja elementų masyve skaičių

echo max($students); // maksimalios reikšmės radimas

echo min($students); // minimalios reikšmės radimas

echo sort($students); // masyvo rikiavimas didėjančia tvarka, arba pagal abecelę

echo rsort($students); // masyvo rikiavimas reversu

// Masyvo konvertavimas į string

$array = ['lastname', 'email', 'phone'];

$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone




?>

Masyvų funkcijos

<?php

// String konvertavimas į masyvą

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2



// reikšmės paieška masyve
$array = array(
    'egg' => true,
    'cheese' => false,
    'hair' => 765,
    'goblins' => null,
    'ogres' => 'no ogres allowed in this array'
);

in_array(765, $array); // true


?>

Masyvų funkcijos

Daugiau masyvų funkcijų:

https://www.php.net/manual/en/ref.array.php

Boolean

  • Boolean - loginis duomenų tipas.
  • Tai paprasčiausias duomenų tipas, turintis dvi reikšmes: loginis „taip“ ir loginis „ne“.
  • Šias reikšmes žymi PHP konstantos TRUE ir FALSE.
  • Kartais patogu įsivaizduoti arba užrašyti skaičiais 1 ir 0.
  • Loginis tipas paprastai naudojamas sąlyginiuose sakiniuose, kur priklausomai nuo reikšmės vykdomas skirtingas algoritmas.

Boolean pagal nutylėjimą yra FALSE

var_dump((bool) "");        // bool(false)

var_dump((bool) 0);        // bool(false)

var_dump((bool) 1);         // bool(true)

var_dump((bool) -2);        // bool(true)

var_dump((bool) "foo");     // bool(true)

var_dump((bool) 2.3e5);     // bool(true)

var_dump((bool) array(12)); // bool(true)

var_dump((bool) array());   // bool(false)

var_dump((bool) "false");   // bool(true)

Null ir empty

  • Null nurodo, kad reikšmės nėra
<?php
$var = NULL;       
?>
  • Empty nurodo, kad turi reikšmes:
    • null
    • 0
    • 0.0
    • false
    • array()

Null ir empty

$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

// Evaluates as true because $var is set
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>

Konstantos

<?php

define('vartotojas', 'Vardenis Pavardenis');

echo vartotojas; // Vardenis Pavardenis

Konstanta PHP kalboje yra kintamasis, kurio reikšmė nekinta.

 

Loginės išraiškos

Klausimas

 

0 === FALSE

True ar False?

 

Sąlygos sakiniai

If

<?php

if ($a > $b)
  echo "a yra didesnis už b";
?>

else, else if

<?php
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}
?>

<!-- Kai vykdomas HTML kode-->

<?php if ($a > $b): ?>
    <div> <?php echo $a." is greater than ".$b; ?> </div>
<?php elseif ($a == $b): ?> 
    <?php echo $a." equals ".$b; ?>
<?php else: ?>
    <?php echo $a." is neither greater than or equal to ".$b; ?>
<?php endif; ?>


Palyginimas ir palyginimo operatoriai

SWITCH

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>

Ciklai

Ciklai kažkuo panašūs į sąlygos sakinius.
 Tik skirtumas toks, kad sąlygos sakinių atveju  
JEIGU [tenkinama sąlyga], TAI [vykdomas veiksmas], o ciklų atveju yra kitaip:

KOL [tenkinama sąlyga], TOL [vykdomas veiksmas]. Tokiu būdu veiksmas atliekamas N kartų - tiek, kiek jums reikia arba iki tol, kol sąlyga nebebus patenkinama.

Ciklai

• for ( $i = 0; $i < 100; $i++ ) { /*...*/ }

• while ( $isLoop == true ) { /*...*/ }

• foreach ($arr as $value) { /*...*/ }
 

For

<?php

for ($i = 1; $i <= 10; $i++) {
    echo $i;
}

?>

While

<?php

$i = 1;
while ($i <= 10) {
    echo $i++;  /* išvedimas
                   $i prieš didinimą vienetu */
}

Do while

<?php

$i = 0;

do {
    echo $i;
} while ($i > 0);

?>

Continue

<?php

for ($i = 0; $i < 5; ++$i) {
    if ($i == 2)
        continue; // pereinama  į sekančią iteraciją
    print "$i";
}
?>

Break

<?php 

$arr = ['one', 'two', 'three', 'four', 'stop', 'five'];

foreach ($arr as $val) {
    if ($val == 'stop') {
        break;    /* Sustabdom ciklą */
    }
    echo "$val<br />\n";
}

Funkcijos

Funkcija yra kodo blokas, kuris gali būti kviečiamas, tada, kai to reikia.

Funkcijos gali būti su argumentais arba be jų ir gali gražinti reikšmę.
 

Realiai, funkcijų pavyzdžius jau esame matę ne kartą: trim(), implode() ar explode() - visa tai yra PHP vidinės funkcijos.

Funkcijos

Funkcijos kūrimas:

function suma ($arg1, $arg2, $arg3) {

  // funkcijos atliekami veiksmai
  $suma = $arg1 + $arg2 + $arg3;
 
  return $suma; // "return" - funkcijos grąžinama reikšmė
}

Funkcijos vykdymas:

<?php

echo suma(10,34,56);

Funkcijos ir parametrai

Funkcija su parametrais:

function suma ($arg1, $arg2, $arg3) {  //nekontroliuojami duomenų tipai

  // funkcijos atliekami veiksmai
  $suma = $arg1 + $arg2 + $arg3;
 
  return $suma; // "return" - funkcijos grąžinama reikšmė
}

Funkcijos su parametrais:

<?php

function sum(int $a, int $b) {
    return $a + $b;
}
var_dump(sum(1, 2));
var_dump(sum(1.5, 2.5));

Funkcijos galiojimo sritis

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a;
    $b=5;

    $b = $a + $b;
    
    return $b;
} 

echo Sum();

echo $b;

Anoniminės funkcijos

<?php

$pasisveikinimas = function ()
{
 return 'Labas';
};

echo $pasisveikinimas(); // Labas


PHP ir HTML

PHP skripto įvykdymo rezultatas yra HTML , kuris perduodamas atvaizdavimui į naršyklę.

Būtent dėl to į PHP skriptą gali būti rašomas HTML kodas.

<html>
<body>
Antroji programa <br />
<?php
echo "Labas rytas";
echo "<h2>Labas vakaras</h2>";
?>
</body>
</html>

PHP ir HTML

Tam, kad neišvedinėti HTML per echo. Galima daryti PHP intarpus

<html>
<body>
<h2>Darbuotojų sąrašas:</h2>
<ul>
<?php foreach($darbuotojai as $darbuotojas):?>
<li><?php echo $darbuotjas; ?></li>
<?php endforech;?>
</ul>
</body>
</html>

Projekto struktūra

 Nesvarbu, kokią programavimo kalbą naudojame, visada privalome vengti dubliavimo ir siekti maksimaliai išnaudoti kodo pernaudojimą.

 

 Todėl organizuojant projekto struktūrą ir HTML šabloną reikia skaidyti į dalis, kurios įtraukiamos tada, kai jų reikia.

Tam naudojama PHP funkcija include (dažnu atveju, kai kodas rašomas nesiremiant OOP principais)

Include

Include ir require:

  • include (įtraukia ir vykdo kodą išoriniame faile)
  • include_once (pagrindinis skirtumas, kad jeigu kodas iš failo jau įkeltas, failas daugiau neįtraukiamas
  • require (veikia, kaip ir include, bet neradus failo gaunama fatal error ir programos vykdymas sustabdomas)
  • require_once (veikomo logika analogiška include_once)

Sesijos ir cookies

Kuom skiriasi:

  • Cookies saugoma vartotojo kompiuteryje
     
  • Sesijos saugomos serveryje

 

Dokumentacija:

Sesijos 

Sesijos naudojimas:

  • Sesijos sukūrimas;
  • Sesijos kintamųjų užpildymas;
  • Sesijos kintamųjų panaudojimas;
  • Sesijos užbaigimas.
Creating New Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session  global variable*/
$_SESSION["newsession"]=$value;
?>
Getting Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session  global variable*/
$_SESSION["newsession"]=$value;
/*session created*/
echo $_SESSION["newsession"];
/*session was getting*/
?>
Updating Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session  global variable*/
$_SESSION["newsession"]=$value;
/*it is my new session*/
$_SESSION["newsession"]=$updatedvalue;
/*session updated*/
?>
Deleting Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session  global variable*/
$_SESSION["newsession"]=$value;
unset($_SESSION["newsession"]);

Cookies

Cookies - yra leidžiantis saugoti duomenis naršyklėje su tikslu indentifikuoti vartotoją ir sekti jo atliekamus veiksmus.

<?php
// set the cookies
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

PHP pagrindai

By Martynas Kašelionis