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


Ayuda con datatables

Hola, acudo a ustedes para ver si pueden orientarme resulta que tengo una tabla que obtiene datos agrupados por nombre de empresa, cada empresa tiene locales en renta y se debe obtener el monto que se debe o que ha sido pagado, segun corresponda tengo algo mas o menos así:

$result = DB::table('espacios') ->select('cuenta_por_cobrars.id','clientes.id as ide...

Obtener Datos de un select en otros input

Buenas estoy intentando que al seleccion un producto me pegue luego en unas cajas de texto los datos.

Mi Controlador:

public function lista(){

$productos = Productos::pluck('Codigo','Descripcion','PVP','id')->prepend('selecciona'); return view ('Productos.NuevoProducto2',compact('productos'));

}

Mi vista:

@extends('admin.plantilla')

@section('content'...

Input que depende del valor seleccionado en Select

Buenas amigos, estoy intentando que al picar en el select me sale el listado de productos por ejemplo y quiero poner en un input el precio.

Por el momento consigo tener mi select lleno de datos, pero no consigo que me envie los datos al input.

Alguna idea o ejemplo para orientarme?

gracias...

componentes

hola amigo italo, buen dia... tengo el siguiente inconveniente... quisiera hacer un select con un componente que me cargue los funcionarios de una empresa y colocarlo en varios formularios en diferentes modales. el componente lo hago correctamente y carga los funcionarios; cuando selecciono el funcionario quisiera cargarlo a una variable VUE que esta en mi instancia principal...