Link Search Menu Expand Document (external link)

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
}

Referenser