Herencia de clases - PHP

Herencia de clases

Esto lo entendemos mejor si nos vamos a un diccionario y buscamos la palabra heredar, hay muchas definiciones pero la que aplica es la siguiente:


Heredar: Recibir algo de una persona o circunstancia anterior.

Es eso simplemente (tu como hijo recibes, usas y hasta modificas lo que tu padre te deja), y el ejemplo que aquí haremos será con 4 archivos:

  • Index: El archivo a ejecutar cuando accedemos al navegador.
  • Person: Clase principal, también llamada clase madre.
  • Student: También es una persona, pero tiene la entidad o el rol de "Estudiante" (hija de Person).
  • Professor: Es otra persona al igual que Studen, pero tiene otro rol, es un "Profesor o líder de aula" (hija de Person).

Sintaxis extends

A través de un ejemplo veremos cómo desde un archivo podemos heredar y al mismo tiempo aprovechar lo que hemos heredado.

Archivo Person (clase madre)

<?php

/**
* this class represents a person
*/
class Person 
{
    
    var $name;
    var $lastname;

    function __construct($name, $lastname)
    {
        $this->name = $name;
        $this->lastname = $lastname;
    }

    function greet()
    {
        return "Hola, {$this->name} cómo estas?";
    }
}

Archivo Student (clase hija, heredera de Person)

<?php

/**
* this class represents a person (Student)
*/
class Student extends Person
{
    
}

Nota que no hay nada dentro de ella, pero al escribir extends Person decimos que hereda de Person y por ende cuenta con el método __construct(), propiedades y método greet().

Archivo Professor (clase hija, heredera de Person)

<?php

/**
* this class represents a person (Professor)
*/
class Professor extends Person
{
    
    function greet()
    {
        return "Hola profesor {$this->name}, cómo está usted?";
    }
}

Al igual que Student, la clase Professor cuenta con todo lo que tiene su madre Person, pero en Professor hice un cambio... He sobrescrito el método greet(). Para saludar con mayor respeto a los profesores que usen el sistema.

Ahora vamos con el archivo que ejecuta todo esto y le da sentido a nuestro sistema, uso la palabra sentido porque llama y ejecuta en orden todo lo antes escrito.

Archivo Index (archivo principal)

<?php

require 'Person.php';
require 'Student.php';
require 'Professor.php';

$student = new Student('Luisa', 'Fantone');
echo $student->greet();

echo '<br>';

$professor = new Professor('Italo', 'Morales');
echo $professor->greet();

Y tenemos el siguiente flujo

Ciclo o flujo de trabajo

  • Se ejecuta el archivo index.php
  • Se incluye la clase Person, Student y Professor (en ese orden porque debe ir primero la clase madre)
  • Se crea el objeto $student y se saluda al estudiante
    • Aquí se usa la clase Student y aprovecha todo de la clase Person gracias a la herencia
  • Se crea el objeto $professor y se saluda
    • Aquí hacemos uso de la clase Professor y la misma aprovecha todo lo que hay en la clase Person, sin embargo, observa que he sobrescrito el método greet(), y esto es lo valioso.. Que a pesar de que heredamos y usamos, no estamos obligados a seguir un patrón estricto.

Con esto finalizamos, visita con frecuencia está web para que aprendas aun más cosas de PHP.

El código está en Github de Rimorsoft Regálanos estrellas y haz fork.

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


crear un radio button que despliegue msj

hola quisiera saber como puedo crear un radio button que cuando lo seleccione me mande un msj de alerta.

mi codigo es el siguiente

---- en mi vista---- {!! Form::label('oobraexte', 'La Obra es:') !!} {!! Form::radio('oobraexte', 'SI', false, ['class'=>'check', 'id'=>'radio1']) !!} ...

recibir un checkbox en el controlador

como puedo recibir un checkbox en el controlador y si esta seleecionado que haga una accion, y si no esta seleccionado que haga otra?, un saludo y gracias...

Enviar arreglos en un input desde html (blade)

Hola a todos actualemente tengo este fragmento de codigo en html dónde envio informacion de un usuario

<!-- cuando es requerido y de tipo checkbox -->
<div class="form-group">
  <div class="col-md-6">
    <label for="{{$tag->tag_name}}" class="col-md-4 control-label">{{$tag->tag_name}}</label>
    <input type="hidden" class="form-control" value="{{$tag->id}}" n...

Como puedo conectarme a múltiples base de datos con laravel

Hola saludos como puedo conectarme a múltiples base de datos y hacer login con los usuarios de cada una de ellas y acceder a la informacion especifica de cual me encuentro iniciada la sesion

Necesito de sua ayuda y orientacíon sobre el tema muchas gracas....