3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Libro { // 1. Ahora son PRIVATE (Solo la propia clase puede tocarlas) private $titulo; private $autor; private $precio; public function __construct($titulo, $autor, $precio) { $this->titulo = $titulo; $this->autor = $autor; // Usamos el setter interno para validar el precio inicial también $this->setPrecio($precio); } // --- GETTERS (Obtener info) --- public function getTitulo() { return $this->titulo; } public function getPrecio() { return $this->precio; } // --- SETTERS (Modificar info con reglas) --- public function setPrecio($nuevoPrecio) { // Aquí está la MAGIA: Validación if ($nuevoPrecio >= 0) { $this->precio = $nuevoPrecio; } else { echo "❌ Error: El precio no puede ser negativo ($nuevoPrecio). Se mantiene el anterior.<br>"; } } public function mostrarInfo() { // Como estamos DENTRO de la clase, sí podemos acceder a $this->precio directamente return "📖 Libro: {$this->titulo}, Autor: {$this->autor}, Precio: {$this->precio}€<br>"; } } // --- ZONA DE PRUEBAS --- $libro1 = new Libro("Harry Potter", "J.K. Rowling", 20); // $libro1->precio = -10; // ESTO AHORA DARÍA ERROR FATAL (No puedes acceder a propiedad privada) // Forma correcta de intentar cambiar el precio: echo "Intentando poner precio negativo...<br>"; $libro1->setPrecio(-50); // El setter bloqueará esto echo "Intentando poner precio correcto...<br>"; $libro1->setPrecio(15); // El setter aceptará esto echo "<hr>"; echo $libro1->mostrarInfo(); // Para leer un dato suelto: echo "El precio actual es: " . $libro1->getPrecio() . "€"; ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.5.30.0090.00819.58
8.5.20.0070.01019.79
8.5.10.0350.00916.76
8.5.00.0250.00816.64
8.4.180.0130.01119.66
8.4.170.0140.00819.70
8.4.160.0310.01120.43
8.4.150.0330.01419.63
8.4.140.0340.01017.55
8.4.130.0390.00717.89
8.4.120.0360.00917.84
8.4.110.0350.01117.89
8.4.100.0400.00817.93
8.4.90.0440.00817.84
8.4.80.0370.00917.85
8.4.70.0370.00717.83
8.4.60.0380.00717.89
8.4.50.0390.00617.82
8.4.40.0230.00317.68
8.4.30.0280.00917.39
8.4.20.0350.00717.61
8.4.10.0410.00817.58
8.3.300.0100.01020.95
8.3.290.0340.01018.22
8.3.280.0390.00518.09
8.3.270.0390.00716.74
8.3.260.0350.00816.61
8.3.250.0330.01116.91
8.3.240.0360.00716.75
8.3.230.0370.00916.50
8.3.220.0410.00716.84
8.3.210.0330.01016.80
8.3.200.0350.01016.77
8.3.190.0390.00716.58
8.3.180.0350.01116.48
8.3.170.0360.00616.48
8.3.160.0380.00716.68
8.3.150.0400.01316.77
8.3.140.0380.01016.85
8.3.130.0320.01016.66
8.3.120.0320.00916.55
8.3.110.0330.00816.33
8.3.100.0410.00616.43
8.3.90.0350.01116.43
8.3.80.0380.00816.67
8.3.70.0410.00516.54
8.3.60.0390.00816.18
8.3.50.0380.00816.45
8.3.40.0410.00618.05
8.3.30.0270.01217.84
8.3.20.0250.01117.91
8.3.10.0270.01117.74
8.3.00.0310.00817.95

preferences:
32.4 ms | 403 KiB | 5 Q