Tutorial PHP

PHP INICIO Introducción PHP Instalación de PHP Sintaxis PHP Comentarios PHP Variables PHP PHP Echo / Imprimir Tipos de datos PHP Cadenas PHP Números PHP Matemáticas PHP Constantes PHP Operadores PHP PHP Si... Más... Elseif Cambio de PHP Bucles de PHP Funciones PHP Matrices de PHP Superglobales de PHP PHP expresión regular

Formularios PHP

Manejo de formularios PHP Validación de formulario PHP Formulario PHP requerido Formulario PHP URL/Correo electrónico Formulario PHP completo

PHP Avanzado

Fecha y hora PHP PHP Incluir Manejo de archivos PHP Archivo PHP Abrir/Leer Archivo PHP Crear/Escribir Carga de archivos PHP Cookies PHP Sesiones PHP Filtros PHP Filtros PHP avanzados Funciones de devolución de llamada de PHP PHPJSON Excepciones de PHP

POO de PHP

PHP ¿Qué es la programación orientada a objetos? Clases PHP/Objetos Constructor PHP Destructor PHP Modificadores de acceso de PHP Herencia de PHP Constantes PHP Clases abstractas de PHP Interfaces PHP Características de PHP Métodos estáticos de PHP Propiedades estáticas de PHP Espacios de nombres de PHP Iterables de PHP

Base de datos MySQL

Base de datos MySQL Conexión MySQL MySQL Crear base de datos Crear tabla MySQL MySQL Insertar datos MySQL Obtener la última identificación MySQL Insertar Múltiples MySQL preparado Datos seleccionados de MySQL mysql donde MySQL Ordenar por MySQL Eliminar datos Datos de actualización de MySQL Límite de datos de MySQL

PHPXML _

Analizadores PHP XML Analizador PHP SimpleXML PHP SimpleXML - Obtener PHP XML Expatriados PHP XML DOM

PHP -AJAX

Introducción a AJAX AJAXPHP Base de datos AJAX XML AJAX Búsqueda en vivo de AJAX Encuesta AJAX

Ejemplos de PHP

Ejemplos de PHP Compilador PHP Cuestionario de PHP Ejercicios PHP Certificado PHP

Referencia PHP

Descripción general de PHP Matriz de PHP Calendario PHP Fecha PHP Directorio PHP Error PHP Excepción PHP Sistema de archivos PHP Filtro PHP PHPFTP PHPJSON Palabras clave PHP PHP Libxml Correo PHP Matemáticas PHP PHP misceláneo PHP MySQLi Red PHP Control de salida de PHP PHP expresión regular PHP SimpleXML flujo PHP Cadena PHP Manejo de variables de PHP Analizador PHP XML código postal de PHP Zonas horarias de PHP

PHP OOP - Rasgos


PHP - ¿Qué son los rasgos?

PHP solo admite herencia simple: una clase secundaria solo puede heredar de un solo padre.

Entonces, ¿qué pasa si una clase necesita heredar múltiples comportamientos? Los rasgos OOP resuelven este problema.

Los rasgos se utilizan para declarar métodos que se pueden utilizar en varias clases. Los rasgos pueden tener métodos y métodos abstractos que se pueden usar en varias clases, y los métodos pueden tener cualquier modificador de acceso (público, privado o protegido).

Los rasgos se declaran con la trait palabra clave:

Sintaxis

<?php
trait TraitName {
  // some code...
}
?>

Para usar un rasgo en una clase, use la use palabra clave:

Sintaxis

<?php
class MyClass {
  use TraitName;
}
?>

Veamos un ejemplo:

Ejemplo

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

Ejemplo explicado

Aquí, declaramos un rasgo: mensaje1. Luego, creamos una clase: Bienvenido. La clase usa el rasgo, y todos los métodos del rasgo estarán disponibles en la clase.

Si otras clases necesitan usar la función msg1(), simplemente use el rasgo de mensaje1 en esas clases. Esto reduce la duplicación de código, porque no hay necesidad de volver a declarar el mismo método una y otra vez.



PHP - Usando Múltiples Rasgos

Veamos otro ejemplo:

Ejemplo

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>

Ejemplo explicado

Aquí, declaramos dos rasgos: mensaje1 y mensaje2. Luego, creamos dos clases: Welcome y Welcome2. La primera clase (Bienvenido) usa el rasgo de mensaje1, y la segunda clase (Bienvenido2) usa los rasgos de mensaje1 y mensaje2 (múltiples rasgos están separados por comas).