Programación Orientada a Objetos en PHP 5




1.- ¿Qué es la Programación Orientada a Objetos?

La Programación Orientada a Objetos (POO) es un paradigma de programación que representa la realidad usando objetos y sus interacciones para diseñar aplicaciones y programas. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos. Este paradigma de programación tomó posición como el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien adaptada.

La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

2.- Características de la Programación Orientada a Objetos

Abstracción: Es fundamental para el pensamiento orientado a objetos. Permite concentrarse en los aspectos del problema presentado, mientras ignora detalles que tienden a distraer. Ya que el mundo real es complejo, se necesita extraer lo esencial e ignorar el resto de la información, eso es abstracción.

Encapsulamiento: La esencia del encapsulamiento está en ocultar la funcionalidad de un objeto, haciéndola invisible a las personas que lo utilicen. Esto reduce la complejidad de su utilización, porque sólo se tiene que comprender su interfaz, olvidándose de cómo está implementada.

Ocultamiento de información: El encapsulamiento conlleva al ocultamiento de información, no permitiendo mostrar al usuario los datos ni la implementación de las operaciones. La mayoría de las personas que escuchan radio no saben o no se preocupan de la complejidad que hay dentro del aparato para dar como salida lo que escuchamos. La radio hace lo que tiene que hacer sin mostrarnos los procesos necesarios para lograrlo, eso se llama ocultamiento de información.

Polimorfismo: Nos da la posibilidad de hacer que una operación exhiba diferente comportamiento en instancias diferentes. El comportamiento varía con respecto a los tipos de datos usados en diferentes operaciones.

Herencia: Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo.

3.- De PHP 3 a PHP 5 (y PHP 6)

PHP fue originalmente diseñado en Perl, en base a la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vitae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.

PHP 3: Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser en inglés) en el año 1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la forma áctual. Inmediatamente comenzaron experimentaciones públicas de PHP3 y fue publicado oficialmente en junio del 1998.

Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como Zend Engine o motor Zend, un portmanteau de los nombres de ambos, Zeev y Andi. También fundaron Zend Technologies en Ramat Gan, Israel.

PHP4: En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El día 13 de julio de 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP, a pesar de lo anunciado se ha liberado una nueva versión con mejoras de seguridad,la 4.4.8 publicada el 13 de Enero del 2008 y posteriormente la versión 4.4.9 publicada el 7 de Agosto de 2008.

PHP5: El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine II (o Zend Engine 2). La versión más reciente de PHP es la 5.2.6 (1 de Mayo de 2008), que incluye todas las ventajas que provee el nuevo Zend Engine 2 como:

* Mejor soporte para la Programación Orientada a Objetos, que en versiones anteriores era extremadamente rudimentario, con PHP Data Objects.
* Mejoras de rendimiento.
* Mejor soporte para MySQL con extensión completamente reescrita.
* Mejor soporte a XML ( XPath, DOM, etc. ).
* Soporte nativo para SQLite.
* Soporte integrado para SOAP.
* Iteradores de datos.
* Manejo de excepciones.

PHP6: Está previsto el lanzamiento en breve de la rama 6 de PHP. Cuando se lance esta nueva versión quedarán solo dos ramas activas en desarrollo (PHP 5 y 6), pues se abandonó el desarrollo y soporte de PHP 4 el 13 de julio de 2007.

Las diferencias que encontraremos frente a PHP 5.* son:

* Soportará Unicode.
* Limpieza de funcionalidades obsoletas como register_globals, safe_mode...
* PECL.
* Mejoras en orientación a objetos.

4.- Objetos, clases, métodos y atributos en PHP 5

Clase: Las clases son tipos de datos definidos por el usuario. Son Declaraciones o abstracciones de objetos, lo que significa, que una clase es la definición de un objeto, definiendo sus características y funcionalidades.

class Persona
{
  var $nombre;
  var $apellido;

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

Objeto: Es una instancia de una clase, que interactúa con otros objetos para proporcionar una solución a un problema.

Se puede decir que un objeto tiene lo siguiente:

- Estado, en un instante dado en el tiempo: El estado de un objeto son las propiedades y los valores que toman estas propiedades en un instante en el tiempo (tiempo de ejecución). Un objeto conoce su estado en cualquier instante del tiempo. Su estado se revela a través de su interfaz.

- Identidad, que es única entre los objetos de la misma clase: La identidad de un objeto se refiere a la manera única en que el objeto en que el objeto es conocido, referido y distinguido de todos los objetos del sistema.

- Comportamiento, que son usualmente los datos y funciones de dicha clase: El comportamiento consiste de responsabilidades que promete llevar a cabo el objeto. Es la manera en que un objeto reacciona a los mensajes que recibe (de otros objetos).

<?php
class Persona
{
  var $nombre;
  var $apellido;

  function __construct($nom, $ape)
  {
    $this->nombre = $nom;
    $this->apellido = $ape;
    echo “<br>Acabo de ingresar<br>”;
  }
}
$Estudiante = new Persona(“Juan”, “Pérez”);
?>

Métodos (funciones): Son las operaciones que puede realizar un cliente sobre un objeto. Forman parte de la declaración de la clase.

<?php
class Persona
{
  var $nombre;
  var $apellido;
  var $edad;
  var $hablar;

  function __construct($nom, $ape, $ed)
  {
    $this->nombre = $nom;
    $this->apellido = $ape;
    $this->edad = $ed;
    if($this->edad > 2)
    {
      $hablar = true;
    }
  }

  function getNombre()
  {
    return $this->nombre;
  }

  function getApellido()
  {
    return $this->apellido;
  }

  function habla()
  {
    return $this->hablar;
  }

  function getEdad()
  {
    return $this->edad;
  }

  function setNombre($nom)
  {
    $this->nombre = $nom;
  }

  function setApellido($ape)
  {
    $this->apellido = $ape;
  }

  function setHabla($ha)
  {
    $hablar = $ha;
  }

  function setEdad($ed)
  {
    $this->edad = $ed;
  }
}

$Estudiante = new Persona("Juan", "Pérez", 5);
echo $Estudiante->getNombre();
$Estudiante->setNombre("María");
echo "<br>Ahora se llama: " . $Estudiante->getNombre();
?>

5.- Abstracción de datos en PHP 5

Podemos tener un conjunto de objetos que tienen unas características comunes y funcionalidades, también comunes, pero que difieren en la manera de llevarlas a cabo. Para esto está la abstracción. Una clase abstracta es la que tiene métodos abstractos. Los métodos abstractos son los que están declarados en una clase, pero no se ha definido en la clase el código de esos métodos.
abstract class Humano
{
  protected $cabello;
  protected $ojos;
  protected $cuerpo;

  abstract function nacer();

  abstract function vivir();

  abstract function parrandear();

  abstract function aprender();

  abstract function enseñar();

  abstract function morir();
}

6.- Encapsulamiento y principio de ocultación en PHP 5

Uno de los principios de la programación orientada a objetos es la encapsulación, que es un proceso por el que se ocultan las características internas de un objeto a aquellos elementos que no tienen porque conocerla. Los modificadores de acceso sirven para indicar los permisos que tendrán otros objetos para acceder a sus métodos y propiedades.

Modificador public

Es el nivel de acceso más permisivo. Sirve para indicar que el método o atributo de la clase es público. En este caso se puede acceder a ese atributo, para visualizarlo o editarlo, por cualquier otro elemento de nuestro programa. Es el modificador que se aplica si no se indica otra cosa.

Modificador private

Es el nivel de acceso más restrictivo. Sirve para indicar que esa variable sólo se va a poder acceder desde el propio objeto, nunca desde fuera. Si intentamos acceder a un método o atributo declarado private desde fuera del propio objeto, obtendremos un mensaje de error indicando que no es posible acceder a ese elemento.

Modificador protected

Este indica un nivel de acceso medio y un poco más especial que los anteriores. Sirve para que el método o atributo sea público dentro del código de la propia clase y de cualquier clase que herede de aquella donde está el método o propiedad protected. Es privado y no accesible desde cualquier otra parte. Es decir, un elemento protected es público dentro de la propia clase y en sus heredadas.


7.- Herencia en PHP 5

Como su nombre indica el concepto de herencia se aplica cuando creamos una clase, que va a heredar los métodos y atributos de una ya definida, entonces la clase que hemos creado es una subclase. Para que una clase sea subclase de otra ya creada deberemos usar la palabra reservada extends.

<?php

abstract class Omnivoro
{
  protected $pelo;
  protected $cuerpo;

  abstract function nacer();

  abstract function vivir();

  //abstract function morir();
}

class Persona extends Omnivoro
{
  protected $nombre;
  protected $apellido;
  protected $sueldo;

  function __construct($nom, $ape)
  {
    $this->nombre = $nom;
    $this->apellido = $ape;
    $this->sueldo = 0;
  }

  function nacer()
  {
    echo "<br>Hola<br>";
  }

  function vivir()
  {
    echo "<br>Hola otra vez<br>";
  }

  function getNombre()
  {
    return $this->nombre;
  }

  function getApellido()
  {
    return $this->apellido;
  }

  function getSueldo()
  {
    return $this->sueldo;
  }

  function setNombre($nom)
  {
    $this->nombre = $nom;
  }

  function setApellido($ape)
  {
    $this->apellido = $ape;
  }

  function setSueldo($suel)
  {
    $this->sueldo = $suel;
  }
}

class Gerente extends Persona
{
  private $clave;
  function __construct($nombre, $apellido, $cla)
  {
    parent::__construct($nombre, $apellido);
    $this->clave = $cla;
  }

  function getClave()
  {
    return $this->clave;
  }

  function setClave($cla)
  {
    $this->clave = $cla;
  }
}

class Empleado extends Persona
{
  private $situacion_actual;
  function __construct($nombre, $apellido, $sit_act)
  {
    parent::__construct($nombre, $apellido);
    $this->situacion_actual = $sit_act;
  }

  function getSituacionActual()
  {
    return $this->situacion_actual;
  }

  function setSituacionActual($sit_act)
  {
    $this->situacion_actual = $sit_act;
  }
}

$gerente[0] = new Gerente("Carlos", "Ramonez", "123");
$gerente[1] = new Gerente("Carlos", "Ramonez", "123");
$gerente[2] = new Gerente("Carlos", "Ramonez", "123");

for($i=0; $i < 3; $i++)
{
  echo "<strong>Empleado #".($i+1)."</strong> ";
  echo $gerente[$i]->getNombre()." ";
  echo $gerente[$i]->getApellido(). " ";
  echo $gerente[$i]->getClave()."<br><br>";
}

?>

8.- Polimorfismo y sobrecarga de métodos PHP 5

El Polimorfismo es la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.

<?php

function dibujar($x)
{
  // Supongamos que este es un método de una clase "Pizarra"
  $x->dibujar();
}
$obj=new Círculo(3,187);
$obj2=new Rectángulo(4,5);
$pizarra->dibujar($obj); // llamará al método dibujar de Círculo.
$pizarra->dibujar($obj2); // llamará al método dibujar de Rectángulo.
?>

La Sobrecarga no es soportada por PHP. En POO uno sobrecarga un método cuando se definen dos o tres métodos con el mismo nombre, pero con diferentes números o tipos de parámetros (dependiendo del lenguaje). No existen tipos de datos en PHP, así que sobrecargar por tipos de datos no funciona, sin embargo, sobrecargar por cantidad de parámetros sí se puede:

<?php
class MiClase
{
  function __construct()
  {
    $nombre="MiClase".func_num_args();
    $this->$nombre();
    // Notar que $this->nombre(); generalmente estaría mal
    // pero aqui $nombre es un string con el nombre del
    // método que se va a llamar
  }
  function __construct($x)
  {
    //código;
  }
  function __construct($x,$y)
  {
  //código;
  }
}
?>

9.- Serialización en PHP 5

Serialización:
<?php

/*class Connection {
  var $link;
  var $server;
  var $username;
  var $password;
  var $db;

  public function __construct($server, $username, $password, $db){
    $this->server = $server;
    $this->username = $username;
    $this->password = $password;
    $this->db = $db;
    $this->connect();
  }

  private function connect(){
    $this->link = mysql_connect($this->server, $this->username, $this->password);
    mysql_select_db($this->db, $this->link);
  }

  public function __sleep(){
    mysql_close($this->link);
  }

  public function __wakeup(){
    $this->connect();
  }
}*/

// Creamos nuestra clase de conexion
$con = "Lo ";//new Conexion("localhost","root","root","test");
echo $con;
// Serializamos nuestra clase
$miClaseparaGuardar = serialize($con);
// guardamos en un archivo la clase
$gestor = fopen("cla.txt", 'w+');
fwrite($gestor, $miClaseparaGuardar );
fclose($gestor);
?>

Deserialización:
<?php

// Recuperamos los datos de la clase
$gestor = fopen("cla.txt", 'r');
$contenido = fread($gestor, filesize("cla.txt"));
fclose($gestor);
$con = unserialize($contenido);
echo $con;
?>

Fuentes:
PHP

LATINCHAIN PLATFORM



news.latin-chain.com/
LatinChain Platform: Pi Hackathon winner 2021.
Welcome to LatinChain Ecosystem portal on Pi Network cryptocurrency ecosystem. Get utility usage bonus by using Mainnet and Testnet.


Understanding the LatinChain Ecosystem

Your gateway to decentralized applications on the Pi Network.


Welcome to the LatinChain Ecosystem portal. As a decentralized application (dApp) built on the Pi Network, our goal is to provide real utility and seamless interaction for the Pi community. Whether you are a developer, a pioneer, or a casual user, understanding the difference between our Mainnet and Testnet environments is crucial for maximizing your experience.



Staking Pi to Boost Rank

Did you know you can directly support the growth of LatinChain Mainnet?

By Staking Pi on our app within the Pi Browser, you help boost our ranking in the ecosystem directory. A higher rank means more visibility, bringing more Pioneers into our community and increasing the value of the network for everyone.

Support us today and help LatinChain reach the top!



Why Choose the Mainnet?

The LatinChain Mainnet (latinchain.pinet.com) is the live production environment where real value is exchanged. By accessing the Mainnet, you are interacting with the fully operational version of our blockchain application.

  • Real Utility: Every action contributes to the genuine activity of the network.
  • Verified Status: Users who choose to support the ecosystem via donations can unlock "Verified" status. This signals your commitment to the community.
  • Double Utility Bonus: Active usage on the Mainnet contributes to your Pi utility usage bonus.


The Role of the Testnet

The Testnet serves as our sandbox environment. It is designed for users who want to explore new features, test transaction flows, or understand the mechanics of the LatinChain token without using real Pi. It is the perfect training ground for new pioneers to get comfortable with Web3 interactions before moving to the Mainnet.



How the LatinChain Token Works

LatinChain is designed to foster a digital economy within the Pi Browser. By participating in either network, you are helping to stress-test and improve a growing financial ecosystem.



Select an option above to begin your journey.

The Evolution of Cryptocurrency: From Bitcoin's Genesis to Pi Network's Ecosystem (2008-nowadays)

The world of finance was forever changed in the aftermath of the 2008 global financial crisis. What started as an obscure proposal on a cryptography mailing list has transformed into a global technological revolution. Here is the journey of cryptocurrency from its inception to the present day.



The Genesis: Bitcoin and the Decentralized Dream (2008-2010)

In October 2008, an anonymous entity named Satoshi Nakamoto published a whitepaper titled "Bitcoin: A Peer-to-Peer Electronic Cash System." It introduced a revolutionary concept: a decentralized digital currency that required no central bank or administrator.

  • The Genesis Block: On January 3, 2009, the first block of the Bitcoin network was mined, setting the foundation for a new financial paradigm.
  • Proof of Work: This brilliant consensus mechanism solved the double-spending problem, ensuring complete trust in a trustless digital environment.



Programmable Money: Ethereum and the DeFi Explosion (2015-2021)

While Bitcoin proved the concept of digital scarcity, developers soon realized blockchain technology could do much more. In 2015, Ethereum launched, introducing "smart contracts"—self-executing code that lives directly on the blockchain.

  • Decentralized Finance (DeFi): Ethereum enabled the creation of lending platforms, decentralized exchanges, and automated market makers.
  • Mainstream Awareness: By 2021, the crypto market reached unprecedented heights, driven by global retail interest, digital art (NFTs), and the exciting promise of Web3.



Maturation and Institutional Adoption (2022-2024)

Following the euphoric highs of previous years, the industry entered a vital period of maturation. The global focus shifted from pure speculation to building robust, scalable infrastructure.

  • Layer 2 Solutions: New networks built on top of base blockchains made transactions significantly faster and cheaper.
  • Wall Street Entry: Major traditional financial institutions embraced Bitcoin ETFs, permanently cementing cryptocurrency as a legitimate and highly sought-after asset class.



The Accessibility Revolution: Pi Network (2025-nowadays)

Despite massive industry growth, a major barrier remained: traditional crypto mining was expensive and technically complex. Enter Pi Network, a visionary project designed to put cryptocurrency directly into the hands of everyday people. By nowadays, Pi Network has beautifully solidified its vision of creating a truly inclusive digital economy.

  • Mobile-First Innovation: Pi revolutionized accessibility by allowing users to mine directly from their smartphones without draining battery life or data.
  • Global Community: It successfully built one of the largest, most engaged, and widely distributed communities in the entire Web3 space.
  • Everyday Utility: With a robust ecosystem of decentralized applications (dApps) and an innovative native KYC solution, Pi Network empowers millions of everyday users to transact, build, and interact seamlessly.



Takeaway: The journey from 2008 to nowadays highlights a monumental shift from niche cryptography to universal accessibility, paving the way for a financial future that truly includes everyone.

Comments

Popular posts from this blog

Tech Industry Brief: Top Technology News From the Last 24 Hours (October 6, 2026)

Pi Network Apps published on Pi Network Ecosystem

Tech Brief (Last 24 Hours): Cloudflare's Open-Weight 'Clef' Models, Reddit Kills RSS & Public APIs, and Google's Gemini 4 Argon