$ageText = $_GET["age"];
// napis "17"
$age = (int) $ageText;
// liczba 17, to samo:
// intval($ageText)
Python
age_text = input("Ile lat? ")
# napis "17"
age = int(age_text)
# liczba 17
JavaScript
let ageText = prompt("Ile lat?");
// napis "17"
let age = Number(ageText);
// liczba 17
Tak samo we wszystkich trzech: dane od człowieka wchodzą jako napis i zamieniacie je jedną funkcją. Inaczej jest przy liczeniu: PHP sam potraktuje napis "17" jak liczbę, Python i JavaScript tego nie zrobią, więc zamiana jest u nich obowiązkowa.
php.net: Language Reference › Types › Type Casting · Function Reference › intval · docs.python.org: Library Reference › Built-in Functions › int · MDN: Web/JavaScript/Reference/Global_Objects/Number
let price = 19.99;
console.log(`Cena: ${price}`);
// Cena: 19.99
Pomysł jest jeden: w tekście zostaje puste miejsce, a język wstawia tam wartość zmiennej. Różni się tylko znak, który to miejsce otwiera: sam dolar w PHP, litera f i klamry w Pythonie, odwrotne apostrofy i ${…} w JavaScripcie.
Dlaczego w PHP dwie nazwy: zapis strlen("Zażółć") daje 10, bo liczy bajty, a każda polska litera zajmuje ich dwa. Zapis mb_strlen("Zażółć") daje 6, bo liczy znaki. Python i JavaScript liczą znaki od razu i też pokazują 6.
Po prawej masz program w Pythonie: pyta o imię i wiek, a potem wypisuje zdanie z rokiem urodzenia. Przepisz go linijka po linijce, nazw zmiennych nie zmieniaj. Bieżący rok podaje date.today().year w Pythonie, new Date().getFullYear() w JavaScripcie i date("Y") w PHP.
Przepisz ten program na JavaScript.
Co się stanie, jeśli pominiesz zamianę na liczbę?
Dla chętnych: wersja w PHP, dane z adresu strony.
Program w Pythonie
from datetime import date
name = input("Jak masz na imię? ")
age_text = input("Ile masz lat? ")
age = int(age_text)
year = date.today().year - age
print(f"Cześć, {name}! Masz {age} lat, "
f"rok urodzenia: {year}.")
Sprawdzenie
Trzy pytania na koniec
Dlaczego wiek wpisany przez użytkownika trzeba zamienić na liczbę?
Co pokaże "2" + "3" w PHP, a co w dwóch pozostałych językach?
Jak wstawić zmienną price w środek napisu w każdym z języków?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
dane z formularza
Każda wyszukiwarka, filtr w sklepie i logowanie czyta w ten sposób to, co wpisał człowiek
codziennie
zamiana na liczbę
Cena, ilość sztuk i wiek przychodzą jako napis, więc serwis przelicza je przed liczeniem
codziennie
przycinanie spacji
Adresy pocztowe i loginy czyści się ze spacji przed zapisem do bazy
codziennie
wypisanie tego, co wpisał człowiek
W PHP przez htmlspecialchars, w JavaScripcie przez textContent, nigdy przez innerHTML
obowiązkowo
Ciekawostka: w Pythonie 2 polecenie input() traktowało wpisany tekst jak kod i od razu go wykonywało. Python 3 oddaje zwykły napis, a stare zachowanie trzeba dziś wywołać samemu.
php.net: Function Reference › htmlspecialchars · MDN: Web/API/Element/innerHTML (sekcja „Security considerations”) · ciekawostka: docs.python.org: What's New In Python 3.0 (Builtins, PEP 3111)