Coder Social home page Coder Social logo

leo-zubiri / php-poo Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 5 KB

Aplicando programación orientada a objetos (POO) en el lenguaje de PHP. Algunos conceptos importantes en este repo: Clases Abstractas, herencia, constructores, getters, settersmétodos y atributos estáticos

PHP 73.15% CSS 15.31% Hack 11.54%
php

php-poo's Introduction

PHP

Para ejecutar este proyecto: php -S localhost:3000

Creación de clases

class Persona{

}

Instanciar clase

$persona = new Persona;

Saber el tipo de dato de una variable

var_dump($persona)  //object(Persona)#1 (0) { } 

Atributos y funciones de clase

class Persona{
    public $nombre;
    public $apellido;
    public $departamento;
    public $email;
    public $codigo;
}

//Sintaxis flecha. Acceder a los atributos o funciones
$empleado -> nombre = "Leo";
$apellido -> apellido = "Zubiri";

Constructores

class Persona{
    public $nombre;
    public $apellido;

    public function __construct($nombre,$apellido)
    {
        $this -> nombre = $nombre;
        $this -> apellido = $apellido;
    }
}

$persona = new Persona("Hedson");

Constructor property promotion

class Persona {
    public function __construct(
        public $nombre,
        public $apellido
    ){}
}

Tipado en PHP

Las variables pueden tomar distintos tipos de datos a menos que se especifique. PHP intenta realizar conversiones en caso de pasar un tipo de dato que no coincida.

    public function __construct(string $nombre, string $apellido)
    {
        $this -> nombre = $nombre;
        $this -> apellido = $apellido;
    }

Métodos en clases

class Persona{
    public function nombrePersona(){
        echo "Imprimir el nombre"
    }

    public function EjecucionEnClase(){
        //Ejecutar dentro de la clase
        $this->nombrePersona();
    }

    public function RetornoValor(){
        return "Hola";
    }
}

//Ejecutar desde una instancia
$persona = new Persona;
$persona -> nombrePersona();

Modificadores de Acceso

  • public. Acceder a los valores desde la clase o la instancia y/o modificarlos.
  • private. Cuando se hereda de una clase, este atributo no se hereda.
  • protected. Acceso y modificación solamente en la clase. Getters y setters.

Getters y Setters

class Persona{

    // Get - Obtener un valor
    public function getNombre(){
        return $this->nombre;
    }

    // Set - Modificar un valor
    public function setNombre($nombre){
        $this->nombre = $nombre;
    }
}

#Llamada a los métodos
$persona->setNombre("Nuevo Nombre");
$persona->getNombre();

Al usar getters y setters las variables de clase deberían cambiarse a protected para asegurar que la manipulación de las variables solo sea mediante los respectivos métoodos.

Herencia

class Persona{
    protected $nombre;
    protected $apellido;

    public function __construct($nombre,$apellido){
        $this->nombre = $nombre;
        $this->apellido = $apellido;
    }
}

class Empleado extends Persona{
    protected $empleado_id;

    public function __construct($nombre,$apellido,$empleado_id){
        // Se llama el constructor del padre
        parent::__construct($nombre,$apellido);
        $this->empleado_id = $empleado_id;
    }
}

Clases Abstractas

Crear clases base que no necesitemos instanciar en objetos. Utilizada heredando hacia otras clases.

abstract class Persona(){

}

Métodos Estáticos

Son aquellos métodos que no requieren una instancia para acceder a ellos.

class Persona(){

    public static function miMetodoEstatico(){
        echo "Desde método estático";
    }
}

// Para llamar el método

Persona::miMetodoEstatico();

De igual manera se pueden crear atributos estáticos con la misma finalidad y uso.

class Persona(){
    protected static $atributo;

    public function __construct($atributo){
        self::$atributo = $atributo;
    }

    public function getAtributo(){
        return self::$atributo;
    }
}

/*
Al crear un objeto Persona, el valor del atributo no se le asigna al objeto si no a la clase misma.
*/

php-poo's People

Contributors

leo-zubiri avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.