Lo sorprendente es que algunas son bastante correctas:
https://www.microsiervos.com/archivo/hackers/hacker-realismo-escenas-peliculas.html
Lo sorprendente es que algunas son bastante correctas:
https://www.microsiervos.com/archivo/hackers/hacker-realismo-escenas-peliculas.html
<?php trait HTML { public function close($tag){ return str_replace("<", "</", $tag); } public function wrap($global, $local,$tabla) { $res = $global; foreach ($tabla as $valor) { $res .= $local.$valor.$this->close($local); } return $res . $this->close($global); } public function lista($tabla) { return $this->wrap("<ul>","<li>",$tabla); } //Crear una función select que nos cree un select con los elementos de la tabla que le pasemos public function select($tabla) { return $this->wrap("<select>","<option>",$tabla); } } //Crear un trait Tablas que incorpore una función duplicados que nos devuelva un array con los elementos duplicados trait Tablas{ public function duplicados($tabla){ $res= array_count_values($tabla); $aux=[]; foreach($res as $c=>$v){ if($v>1){ $aux[]=$c; } } return $aux; } public function duplicadosPro($tabla){ return array_unique(array_diff_key($tabla, array_unique($tabla))); } } class EjemploTrait { use HTML,Tablas; public $datos = [1, 2, 3,2, 4, 2,3, "hola"]; function __toString() { return $this->lista($this->duplicadosPro($this->datos)); } } $a = new EjemploTrait(); echo $a;
class Aula { //propiedades nombre de tipo string y capacidad de tipo entero privadas //Crear constructor con nombre obligatorio y capacidad opcional (por defecto 15) //Crear getters y setters: El nombre no puede estar vacío y la capacidad entre 10 y 100 private $nombre; private $capacidad; function __construct(string $nombre, int $capacidad = 15) { $this->setNombre($nombre); $this->setCapacidad($capacidad); } function getNombre() { return $this->nombre; } function getCapacidad() { return $this->capacidad; } function setNombre(string $nombre) { if (!empty($nombre)) { $this->nombre = $nombre; } else { throw new Exception('El nombre no puede estar vacío'); } } function setCapacidad(int $capacidad) { if ($capacidad < 10 || $capacidad > 100) { throw new Exception('Capacidad entre 10 y 100'); } else { $this->capacidad = $capacidad; } } } try { $a = new Aula("Nombre"); $a->setCapacidad(500); } catch (Exception $ex) { echo $ex->getMessage() . " en la línea " . $ex->getLine(); }
class Producto { public $nombre; public $precio; function __construct($nombre, $precio = 0) { $this->nombre = $nombre; $this->precio = $precio; } function resumen() { return $this->nombre . " " . $this->precio; } function pvp() { return $this->precio * 1.21; } } class Cd extends Producto { public $longitud; } $nuevoCd=new Cd('Reggeton mix'); $nuevoCd->longitud=90; $nuevoCd->precio=20; var_dump($nuevoCd); //Crear una clase libro con propiedad páginas que derive de producto class Libro extends Producto{ public $paginas; //Sobreescribir el constructor añadiendo el parámetro páginas function __construct($nombre, $paginas, $precio = 0) { parent::__construct($nombre, $precio); $this->paginas=$paginas; } //Sobreescribimos el método de la clase madre function resumen(){ //Invocamos el método de la clase madre return parent::resumen()." ".$this->paginas; } } class LibroAntiguo extends Libro{ public $anyo; function __construct($nombre, $paginas,$anyo, $precio = 0) { parent::__construct($nombre, $paginas, $precio); $this->anyo=$anyo; } } $nuevoLibro=new Libro('El Quijote',400); echo $nuevoLibro->resumen(); $antiguo=new LibroAntiguo('Quijote',500,1754); echo $antiguo->resumen();
Una historia interesante:
https://medium.com/tienda-nube/el-d%C3%ADa-que-abandonamos-los-roadmaps-c2db2e4d92a8
La plantilla:
<form action="areas/imagen" method="post" enctype="multipart/form-data"> <input type="file" name="imagen"><br/> <input type="submit"> </form>
El controlador:
/** * @Route("/areas/imagen", name="imagen") */ public function imagen() { $destino= $this->get('kernel')->getProjectDir()."/public/upload"; $request = Request::createFromGlobals(); $archivo = $request->files->get('imagen'); $archivo->move($destino,$archivo->getClientOriginalName()); return $this->render('areas/index.html.twig'); }