<?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;