Parámetros de tipo objeto en PHP

Parámeto del tipo objeto

En Rimorsoft hemos ido descubriendo cómo pasar parámetros y asegurarnos de que los tipos sean correctos. Hemos visto un ejemplo muy interesante en post de funciones anónimas, pero no es lo único que podemos hacer.


Aquí veremos cómo pasar a un objeto un parámetro del tipo objeto.

Le he dado muchas vueltas y creo que conseguí la mejor manera de explicarlo. Vamos a crear tres (3) archivos:

  • Index: Archivo principal, y es el que ejecutamos en el navegador.
  • Post: Un objeto que tiene como fin ocuparse de todo lo relacionado con los posts o articulos del sistema.
  • Author: Es el objeto que representa al dueño del post.

La lógica dice que para crear un Post necesitamos si o si a un Author. Comencemos:

Clase Author

<?php

/**
* this class represents a author
*/
class Author 
{
	
    var $name;
    var $lastname;

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

}

Clase Post

<?php

/**
* this class represents a post
*/
class Post 
{
	
    var $author;
    var $title;
    var $body;

    function __construct(Author $author, $title, $body)
    {
	$this->author = $author;
	$this->title  = $title;
	$this->body   = $body;
    }

}

Importante: Nota como el constructor tiene un parámetro del tipo Author, y el resto son solo string (cadena de texto)... Esto nos dice de inmediato que para crear con éxito un Post, necesitamos contar con el Author.

Archivo index.php

<?php

require 'Post.php';
require 'Author.php';

$author = new Author('Italo', 'Morales');
$post   = new Post($author, 'Clases en PHP', 'Las clases nos ayudan...');

echo "Título: {$post->title} <br>";
echo "Contenido: {$post->body} <br>";
echo "Autor: {$post->author->name} <br>";

echo '<pre>'; // structure the output
var_dump($post); // detail of the post object

Resultado

Al ejecutar este código debemos ver lo siguiente:

Título: Clases en PHP
Contenido: Las clases nos ayudan...
Autor: Italo

object(Post)#2 (3) {
  ["author"]=>
  object(Author)#1 (2) {
    ["name"]=>
    string(5) "Italo"
    ["lastname"]=>
    string(7) "Morales"
  }
  ["title"]=>
  string(13) "Clases en PHP"
  ["body"]=>
  string(24) "Las clases nos ayudan..."
}

Lo interesante es la estructura del objeto, dice claramente que Post es un objeto y que dentro tiene otro objeto llamado Author. Luego vemos los string title y body.

Conceptos

  • Etiqueta pre: Con esta etiqueta logramos ver correctamente el objeto, si no usamos esta etiqueta antes del var_dump($post); veremos todo en una sola línea.
  • Función var_dump: Con esto logramos ver la información de una variable, en este caso me interesa saber que hay dentro de la variable $post. Si escribo echo $post; me dará error porque $post no es un string, es un objeto.

Esto es POO, y la idea es seguir profundizando para convertirte en un gran programador y no en un usuario Laravel. Quiero que veas cualquier cosa fabricada en Laravel y digas ¡Genial, es una clase, hereda de, el parámetro es, y así ....... !

Saber realmente PHP te ayudará a comprender cualquier Framework.

El código está en Github de Rimorsoft Regálanos estrellas y está pendiente de los otros post de PHP.

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...