Esercizi Metodi e Proprietà Statiche PHP
Codegrind Team•Jul 22 2023
Ecco degli esercizi semplici con soluzione per praticare l’utilizzo delle proprietà e metodi statici delle classi in PHP.
Esercizio 1
Creare una classe "Contatore" con una proprietà statica "valore" e un metodo statico "incrementa()" che incrementa il valore del contatore di 1 ogni volta che viene chiamato.
<?php
class Contatore {
public static $valore = 0;
public static function incrementa() {
self::$valore++;
}
}
echo Contatore::$valore; // Output: 0
Contatore::incrementa();
echo Contatore::$valore; // Output: 1
Contatore::incrementa();
echo Contatore::$valore; // Output: 2
?>
Esercizio 2
Creare una classe "Configurazione" con una proprietà statica "opzioni" che contiene un array di opzioni di configurazione e un metodo statico "getOpzione($chiave)" che restituisce il valore dell'opzione corrispondente alla chiave specificata.
<?php
class Configurazione {
public static $opzioni = array(
'lingua' => 'italiano',
'tema' => 'scuro',
'dimensione_font' => '12px'
);
public static function getOpzione($chiave) {
if (array_key_exists($chiave, self::$opzioni)) {
return self::$opzioni[$chiave];
}
return null;
}
}
echo Configurazione::getOpzione('lingua'); // Output: italiano
echo Configurazione::getOpzione('tema'); // Output: scuro
echo Configurazione::getOpzione('dimensione_font'); // Output: 12px
echo Configurazione::getOpzione('colore_sfondo'); // Output: null
?>
Esercizio 3
Creare una classe "Logger" con una proprietà statica "livello" e un metodo statico "registra($messaggio)" che registra il messaggio di log solo se il livello di log è impostato su "debug".
<?php
class Logger {
public static $livello = 'debug';
public static function registra($messaggio) {
if (self::$livello == 'debug') {
echo $messaggio;
}
}
}
Logger::registra('Messaggio di debug'); // Output: Messaggio di debug
Logger::$livello = 'info';
Logger::registra('Messaggio di info'); // Nessun output
?>
Esercizio 4
Creare una classe "Matematica" con un metodo statico "somma($numeri)" che restituisce la somma dei numeri passati come parametro.
<?php
class Matematica {
public static function somma($numeri) {
return array_sum($numeri);
}
}
echo Matematica::somma(array(2, 4, 6)); // Output: 12
echo Matematica::somma(array(1, 3, 5, 7)); // Output: 16
?>
Esercizio 5
Creare una classe "Database" con una proprietà statica "connessione" che rappresenta la connessione al database e un metodo statico "connetti()" che stabilisce la connessione al database.
<?php
class Database {
public static $connessione;
public static function connetti() {
self::$connessione = /* Logica per la connessione al database */;
}
}
Database::connetti();
?>
Esercizio 6
Creare una classe "Cache" con una proprietà statica "dati" che contiene i dati memorizzati nella cache e un metodo statico "salvaDati($chiave, $valore)" che salva un valore nella cache utilizzando la chiave specificata.
<?php
class Cache {
public static $dati = array();
public static function salvaDati($chiave, $valore) {
self::$dati[$chiave] = $valore;
}
}
Cache::salvaDati('chiave1', 'valore1');
Cache::salvaDati('chiave2', 'valore2');
echo Cache::$dati['chiave1']; // Output: valore1
echo Cache::$dati['chiave2']; // Output: valore2
?>
Esercizio 7
Creare una classe "Utente" con una proprietà statica "ruolo" che rappresenta il ruolo dell'utente e un metodo statico "verificaAccesso()" che verifica se l'utente ha accesso alle risorse protette.
<?php
class Utente {
public static $ruolo;
public static function verificaAccesso() {
if (self::$ruolo == 'amministratore') {
echo "Accesso consentito!";
} else {
echo "Accesso negato!";
}
}
}
Utente::$ruolo = 'amministratore';
Utente::verificaAccesso(); // Output: Accesso consentito!
Utente::$ruolo = 'utente_normale';
Utente::verificaAccesso(); // Output: Accesso negato!
?>
Esercizio 8
Creare una classe "Configurazione" con una proprietà statica "valori" che contiene un array associativo di valori di configurazione e un metodo statico "impostaValore($chiave, $valore)" che imposta un valore di configurazione utilizzando la chiave specificata.
<?php
class Configurazione {
public static $valori = array(
'lingua' => 'italiano',
'tema' => 'scuro',
'dimensione_font' => '12px'
);
public static function impostaValore($chiave, $valore) {
self::$valori[$chiave] = $valore;
}
}
Configurazione::impostaValore('lingua', 'inglese');
Configurazione::impostaValore('tema', 'chiaro');
echo Configurazione::$valori['lingua']; // Output: inglese
echo Configurazione::$valori['tema']; // Output: chiaro
?>
Esercizio 9
Creare una classe "Contatore" con una proprietà statica "valore" e un metodo statico "azzera()" che reimposta il valore del contatore a 0.
<?php
class Contatore {
public static $valore = 0;
public static function azzera() {
self::$valore = 0;
}
}
Contatore::$valore = 10;
echo Contatore::$valore; // Output: 10
Contatore::azzera();
echo Contatore::$valore; // Output: 0
?>
Esercizio 10
Creare una classe "Matematica" con un metodo statico "moltiplica($numeri)" che restituisce il prodotto dei numeri passati come parametro.
<?php
class Matematica {
public static function moltiplica($numeri) {
$risultato = 1;
foreach ($numeri as $numero) {
$risultato *= $numero;
}
return $risultato;
}
}
echo Matematica::moltiplica(array(2, 3, 4)); // Output: 24
echo Matematica::moltiplica(array(1, 2, 3, 4, 5)); // Output: 120
?>