BE 1.1 PHP
Table of contents
PHP är ett open source script språk som kan bäddas in i HTML. PHP kod kan allstå skrivas direkt i HTML-koden mellan taggarna <?php
och ?>
.
PHP skiljer ut sig från JavaScript genom att den exekveras på servern, genererar HTML som sedan skickas til klienten. Klienten kommer alltså bara att få resultatet av skriptet, men inte den bakomliggande koden.
PHP är ett väldigt enkelt språk att lära sig, och det används främst i backend. 1
Syntax
Direkt i <body>
i HTML-koden (se arrayen $books
här)
<ul>
<?php
foreach($books as $book) { ?>
<li>
<?php
echo $book['title'];
?>
</li>
<?php } ?>
</ul>
Printar:
- To Kill A Mockingbird
- 1984
- One Hundred Years Of Solitude
Template
Istället för att blanda hejvilt, gör template-kod. Håll all HTML och PHP i en sträng i en funktion.
Funktion för att skriva ut bokens titel (i kursivt), författaren och om boken inte är tillgänglig, printa ut det (inom parentes).
I functions.php
:
function printableTitle(array $book) : string
{
$result = "<i>{$book['title']}</i> - {$book['author']}";
if(!$book['available']) {
$result .= " (not available)";
}
return $result;
}
Ta in filen functions.php
i HTML-filen. Längst upp i index.php
(ovanför boilerplaten):
<?php
declare (strict_types = 1);
require_once 'functions.php';
?>
Ta in i listan i foreach-loopen:
<?php
foreach($books as $book) { ?>
<li>
<?php echo printableTitle($book); ?>
</li>
<?php }; ?>
Printar:
- To Kill A Mockingbird - Harper Lee
- 1984 - George Orwell
- One Hundred Years Of Solitude - Gabriel Garcia Marquez (not available)
Alternativ syntax
Konkatinera allt som en sträng:
<ul>
<?php foreach($books as $book) {
echo ("<li>" . printableTitle($book) . "</li>");
}; ?>
</ul>
eller:
<ul>
<?php foreach($books as $book) {
$bookInfo = printableTitle($book);
echo "<li>{$bookInfo}</li>";
}; ?>
</ul>
Arrayer
Samma som i JavaScript, en array är som ett special objekt med nummer som keys. Två sätt att skriva arrayer på.
$wizards = ['Harry', 'Ron', 'Hermione'];
$magicians = array('Harry', 'Ron', 'Hermione');
Associativ array
Associativ array (som object i JavaScript, men strängar som keys).
$aligned_wiz = [
'name' => 'Harry Potter',
'status' => 'alive',
'alignment' => 'good'
];
(Associativ) array i en array
I arrayen $books
finns två items, '1984'
och 'Romeo and Juliet'
. Var och en av dem är en associativ array, som innehåller 3 respektive 2 items med namngivna keys.
Exempel
$books = [
'1984' => [
'author' => 'George Orwell',
'finished' => true,
'rate' => 9.5
],
'Romeo and Juliet' => [
'author' => 'William Shakespeare'
'finished' => false
]
];
Manipulera arrayer
Manipulera arrayer med inbyggda funktioner i PHP.
is_array
Returnerar true
om variabeln är en array.
echo is_array($books) ? 'array' : 'not an array';
// array
array_push
Som i JavaScript, lägga till fler items i slutet på en array.
$new_book = [
'Lord of the Rings' => [
'author' => 'JRR Tolkien',
'finished' => false
]
];
array_push($books, $new_book);
Funktioner
Ett block med kod som återanvänds. Det finns många inbyggda funktioner i PHP. Funktioner ska egentligen inte påverka saker utanför funktionen.
Deklarera funktioner i PHP
Syntaxen är väldigt lik JavaScript
<?php
function addNumbers($a, $b) {
return $a + $b;
}
echo addNumbers(2, 3); //5
?>
Mellanspara i en variabel
<?php
function addNumbers($a, $b) {
$sum = $a + $b;
return $sum;
}
echo addNumbers(10, 20); // 30
?>
Konkatinera med .
och spara det vi printar i en variabel
function addName($a, $b) {
$both = $a . $b;
return $both;
}
echo $result = addNames('Harry', 'Potter'); // HarryPotter
Funktionsargument
- Funktionen får in info via argument
- Det går att ha flera (eller inga) per funktion
- Argumenten behöver ha ett namn (ska vara förklarande), och de ska vara olika
- När funktionen anropas så måste den ropas på med samma mängd argument som definierats, och i samma ordning
- En funktion i PHP kan ha optional arguments (frivilliga), då behöver inget värde skickas in för det argumentet
- För att göra ett optional argument så måste funktionen tilldela det argumentet ett default value
Optional argument
$printResult
är ett optional argument, där false
är default värdet. Finns inget default värde så är argumentet inte optional.
function sumNumbers($a, $b, $printResult = false)
{
$sum = $a + $b;
if ($printResult) {
echo 'The result is ' . $sum;
}
}
Om vi inte skickar in true
som argument för $printResult
, så printas ingenting.
Type hinting och return type
Från och med PHP7 så går det att specificera vilka typer argumenten måste vara i, och vilka typer som funktionen ska returnera.
Längst upp i dokumentet för att detta ska funka:
<?php
declare(strict_types=1);
Type hinting
Vilka typer argument/-en ska vara.
Exempel: int
, int
och bool
:
function addNumbers(int $a, int $b, bool $printSum)
{
// statement
}
Return type
Vilka typer ska funktionen returnera.
Exempel int
:
function addNumbers($a, $b, $printSum): int
{
// statement
}