Clase:

Card:

Web:

Aprender a diseñar tus propios tipos de datos en PHP marca una diferencia esencial en cualquier proyecto profesional. Estrategias claras y ordenadas aportan robustez y eficiencia al desarrollo, permitiéndote gestionar mejor la información. La creación de clases define estructuras reutilizables, mejorando el control sobre los datos.
¿Qué es una clase en PHP y cómo funciona?
Una clase en PHP es un molde que permite crear tu propio tipo de dato. Tal como indica la palabra reservada class, cada clase contiene propiedades específicas que requieren ciertos tipos de información. Por ejemplo, en un curso, puedes definir un título, subtítulo, descripción y etiquetas.
Al definir una clase, se establece la estructura básica que todos sus objetos deberán seguir. Las propiedades se especifican claramente desde el inicio y se asignan valores mediante un constructor:
class Curso { public $titulo; public $subtitulo; public $descripcion; public $etiquetas; public function __construct($titulo, $subtitulo, $descripcion, $etiquetas) { $this->titulo = $titulo; $this->subtitulo = $subtitulo; $this->descripcion = $descripcion; $this->etiquetas = $etiquetas; } }
¿Cómo crear objetos a partir de una clase?
Crear un objeto es simplemente seguir la estructura establecida por la clase. Al instanciar el objeto, debes respetar el orden de los elementos para mantener la integridad y coherencia del dato:
$cursoPHP = new Curso( 'Curso Profesional de PHP y Laravel', 'Crea aplicaciones con PHP', 'Curso enfocado en el desarrollo de aplicaciones web usando Laravel.', ['php', 'laravel'] );
Cada instancia mantiene la estructura y propiedades definidas en su clase. PHP maneja esta información mediante sintaxis específicas para objetos, que permiten acceder a sus propiedades de forma directa utilizando flechas (->):
echo $cursoPHP->titulo; // imprime el título
¿Por qué utilizar clases en tu proyecto PHP?
Implementar clases aporta profesionalismo y claridad a tus proyectos. Te permite encapsular datos y comportamientos, facilitando el mantenimiento, la legibilidad y escalabilidad en tus desarrollos. Además, brinda certeza y orden a la información:
¿Cómo avanzar aplicando este conocimiento?
Una buena práctica sería que intentes crear ahora mismo otra clase, por ejemplo, Autor. Define propiedades adecuadas y luego crea diferentes objetos. Muestra los objetos en pantalla y verifica que todo funcione correctamente. Así, estarás consolidando tus conocimientos en la creación y manejo de clases en PHP.
Si realizas este ejercicio o tienes dudas, ¡comparte tu código y experiencia en los comentarios!
Aprender a diseñar tus propios tipos de datos en PHP marca una diferencia esencial en cualquier proyecto profesional. Estrategias claras y ordenadas aportan robustez y eficiencia al desarrollo, permitiéndote gestionar mejor la información. La creación de clases define estructuras reutilizables, mejorando el control sobre los datos.
Una clase en PHP es un molde que permite crear tu propio tipo de dato. Tal como indica la palabra reservada class, cada clase contiene propiedades específicas que requieren ciertos tipos de información. Por ejemplo, en un curso, puedes definir un título, subtítulo, descripción y etiquetas.
Al definir una clase, se establece la estructura básica que todos sus objetos deberán seguir. Las propiedades se especifican claramente desde el inicio y se asignan valores mediante un constructor:
class Curso {
public $titulo;
public $subtitulo;
public $descripcion;
public $etiquetas;
public function __construct($titulo, $subtitulo, $descripcion, $etiquetas) {
$this->titulo = $titulo;
$this->subtitulo = $subtitulo;
$this->descripcion = $descripcion;
$this->etiquetas = $etiquetas;
}
}
Crear un objeto es simplemente seguir la estructura establecida por la clase. Al instanciar el objeto, debes respetar el orden de los elementos para mantener la integridad y coherencia del dato:
$cursoPHP = new Curso(
'Curso Profesional de PHP y Laravel',
'Crea aplicaciones con PHP',
'Curso enfocado en el desarrollo de aplicaciones web usando Laravel.',
['php', 'laravel']
);
Cada instancia mantiene la estructura y propiedades definidas en su clase. PHP maneja esta información mediante sintaxis específicas para objetos, que permiten acceder a sus propiedades de forma directa utilizando flechas (->):
echo $cursoPHP->titulo; // imprime el título
Implementar clases aporta profesionalismo y claridad a tus proyectos. Te permite encapsular datos y comportamientos, facilitando el mantenimiento, la legibilidad y escalabilidad en tus desarrollos. Además, brinda certeza y orden a la información:
Una buena práctica sería que intentes crear ahora mismo otra clase, por ejemplo, Autor. Define propiedades adecuadas y luego crea diferentes objetos. Muestra los objetos en pantalla y verifica que todo funcione correctamente. Así, estarás consolidando tus conocimientos en la creación y manejo de clases en PHP.
Si realizas este ejercicio o tienes dudas, ¡comparte tu código y experiencia en los comentarios!
Clase:

Card:

Web:

<?php
class Autor{
public function __construct(
public string $nombre,
public string $app,
public string $apm,
public string $edad,
public string $carrera,
public array $cursos
)
{
}
}
$autor = new Autor(
nombre: 'Emmanuel Garcia Roldan',
app: 'Garcia',
apm: 'Roldan',
edad: '35',
carrera: 'Ing en Sistemas',
cursos: ['Backend PHP', 'laravel','introduccion a android ']
);
class Curso{
public function __construct(
public string $titulo,
public string $subtitulo,
public string $descripcion,
public string $costo,
public array $etiqueta,
public array $etiqueta2
)
{
}
}
$curso= new Curso(
titulo: 'Apilcaciones en android',
subtitulo: 'introduccion al desarrollo de apk',
descripcion:'inicio en android studio',
costo: 'Gratis',
etiqueta: [
"PHP",
"Laravel",
"Javascript",
"css",
"angular"
],
etiqueta2:[
"mysql",
"SQL",
"MongoDb"
]
);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $curso->titulo ?></title>
</head>
<body>
<h2>Bienvenido a el <?=$curso->titulo?></h2>
<h4><?= $curso -> subtitulo?></h4>
<h4><?= $curso -> descripcion?></h4>
<h3>Costo: <?= $curso -> costo ?></h3>
<strong>Etiquetas</strong>
<ul>
<?php
foreach ($curso -> etiqueta as $etiquetas) :
?>
<li><?= $etiquetas ?></li>
<?php endforeach; ?>
</ul>
<strong>Cursos relacionados</strong>
<ul>
<?php
foreach ($curso ->etiqueta2 as $etiquetas2) :
?>
<li><?= $etiquetas2 ?></li>
<?php endforeach; ?>
</ul>
<h2>Nombre del autor:<?= $autor -> nombre." ".$autor ->app." ".$autor ->apm?></h2>
<h3>Edad:<?= $autor ->edad?></h3>
<h3>Carrera: <?= $autor -> carrera?></h3>
<h4>Cursos que da
<?php
foreach ($autor -> cursos as $cursoDa):
?>
<li><?=$cursoDa?></li>
<?php endforeach;?>
</h4>
</body>
</html>
```\<?phpclass Autor{ public function \_\_construct( public string $nombre, public string $app, public string $apm, public string $edad, public string $carrera, public array $cursos ) { }}$autor = new Autor( nombre: 'Emmanuel Garcia Roldan', app: 'Garcia', apm: 'Roldan', edad: '35', carrera: 'Ing en Sistemas', cursos: \['Backend PHP', 'laravel','introduccion a android ']);
class Curso{ public function \_\_construct( public string $titulo, public string $subtitulo, public string $descripcion, public string $costo, public array $etiqueta, public array $etiqueta2
) { }}$curso= new Curso( titulo: 'Apilcaciones en android', subtitulo: 'introduccion al desarrollo de apk', descripcion:'inicio en android studio', costo: 'Gratis', etiqueta: \[ "PHP", "Laravel", "Javascript", "css", "angular" ], etiqueta2:\[ "mysql", "SQL", "MongoDb" ]);
?>\<!DOCTYPE html>\<html lang="en">\<head> \<meta charset="UTF-8"> \<meta name="viewport" content="width=device-width, initial-scale=1.0"> \<title>\<?= $curso->titulo ?>\</title>\</head>\<body>
\<h2>Bienvenido a el \<?=$curso->titulo?>\</h2> \<h4>\<?= $curso -> subtitulo?>\</h4> \<h4>\<?= $curso -> descripcion?>\</h4> \<h3>Costo: \<?= $curso -> costo ?>\</h3> \<strong>Etiquetas\</strong> \<ul> \<?php foreach ($curso -> etiqueta as $etiquetas) : ?> \<li>\<?= $etiquetas ?>\</li> \<?php endforeach; ?> \</ul> \<strong>Cursos relacionados\</strong> \<ul> \<?php foreach ($curso ->etiqueta2 as $etiquetas2) : ?> \<li>\<?= $etiquetas2 ?>\</li> \<?php endforeach; ?> \</ul> \<h2>Nombre del autor:\<?= $autor -> nombre." ".$autor ->app." ".$autor ->apm?>\</h2> \<h3>Edad:\<?= $autor ->edad?>\</h3> \<h3>Carrera: \<?= $autor -> carrera?>\</h3> \<h4>Cursos que da
\<?php foreach ($autor -> cursos as $cursoDa): ?> \<li>\<?=$cursoDa?>\</li> \<?php endforeach;?> \</h4>
\</body>\</html>
Ojo al dato, esta clase es super importante clase y objetos. 🏆
La segunda forma de definir la clase se llama promocion automatica.



La manera de trabajar las clases y el contructor que se muestra en esta clase, la forma "nueva", desde cuando está vigente en php? Es por esto que varios frameworks cambiaron al formato de argumentos cuando se crean las clases y constructores? Me parece mucho mas claro asi.
<?php
class Author {
// Constructor y propiedades
public function __construct(
public string $genero,
public string $nombre,
public string $fechaNacimiento,
public array $peliculas
) {}
// Método para calcular la edad del autor
public function edad(): int {
$fechaNacimiento = new DateTime($this->fechaNacimiento);
$fechaActual = new DateTime();
return $fechaActual->diff($fechaNacimiento)->y;
}
// Método para contar la cantidad de películas
public function totalPeliculas(): int {
return count($this->peliculas);
}
}
?>
<?php
// Crear autores del género horror
$king = new Author(
genero: "Horror",
nombre: "Stephen King",
fechaNacimiento: "1947-09-21",
peliculas: ["Carrie", "El resplandor", "Misery", "It"]
);
$carpenter = new Author(
genero: "Horror",
nombre: "John Carpenter",
fechaNacimiento: "1945-01-16",
peliculas: ["Halloween", "The Fog", "Escape from New York", "Big Trouble in Little China"]
);
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Autores de Horror: Stephen King y John Carpenter</title>
</head>
<body>
<h2>Maestros del género <?= $king->genero ?></h2>
<section>
<h3>Información del Autor</h3>
<p><strong>Nombre:</strong> <?= $king->nombre ?></p>
<p><strong>Fecha de Nacimiento:</strong> <?= $king->fechaNacimiento ?></p>
<p><strong>Edad:</strong> <?= $king->edad() ?> años</p>
<p><strong>Total de Películas:</strong> <?= $king->totalPeliculas() ?></p>
<ul>
<?php foreach ($king->peliculas as $pelicula) : ?>
<li><?= $pelicula ?></li>
<?php endforeach; ?>
</ul>
</section>
<hr>
<section>
<h3>Información del Autor</h3>
<p><strong>Nombre:</strong> <?= $carpenter->nombre ?></p>
<p><strong>Fecha de Nacimiento:</strong> <?= $carpenter->fechaNacimiento ?></p>
<p><strong>Edad:</strong> <?= $carpenter->edad() ?> años</p>
<p><strong>Total de Películas:</strong> <?= $carpenter->totalPeliculas() ?></p>
<ul>
<?php foreach ($carpenter->peliculas as $pelicula) : ?>
<li><?= $pelicula ?></li>
<?php endforeach; ?>
</ul>
</section>
</body>
</html>
<?php
class Curso{
public function __construct(
public string $titulo,
public string $subtitulo,
public string $descripcion,
public array $tags
){
}
}
class Autor{
public function __construct(
public string $nombre,
public int $edad,
public string $pais,
public array $libros
){
}
}
$curso = new Curso(
titulo: 'Curso de Fundamentos de PHP',
subtitulo: 'Un curso con enfoque a nivel básico',
descripcion: 'Aprende a programar en PHP desde cero',
tags: ['PHP', 'Laravel', 'Java', 'HTML', 'CSS']
);
$autor = new Autor(
nombre: 'Alejandro Dumas',
edad: '30',
pais: 'Francia',
libros: ['Los 3 mosqueteros','El conde de Montecristo','Veinte años después','La reina Margoth']
);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> <?= $curso->titulo ?></title>
</head>
<body>
<h1>BIENVENIDO</h1>
<h2>INFORMACIÓN DEL CURSO</h2>
<b>Nombre del curso:</b>
<?= $curso->titulo ?>
<br>
<b>Subtitulo del curso:</b>
<?= $curso->subtitulo ?>
<br>
<b> Descripcion del curso:</b>
<?= $curso->descripcion ?>
<br>
<b>Tags del curso:</b>
<ul>
<?php foreach($curso->tags as $tag): ?>
<li> <?= $tag ?> </li>
<?php endforeach; ?>
</ul>
<br><br>
<h2>INFORMACIÓN DEL AUTOR</h2>
<b>Nombre del autor:</b>
<?= $autor->nombre ?>
<br>
<b>Edad:</b>
<?= $autor->edad ?>
<br>
<b>Pais:</b>
<?= $autor->pais ?>
<br>
<b>Libros:</b>
<ul>
<?php foreach($autor->libros as $libro): ?>
<li> <?= $libro ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>
Me gusta como enseña la forma antigua de como construir clases algo lento y repetitivo a la forma mas reciente, un proceso mas rápido.
<?php
$course = [
"title" => "Curso profesional de PHP y Laravel",
"subtitle" => "Aprende PHP y Laravel desde cero",
"description" => "Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Omnis atque, explicabo repudiandae sint quisquam,
eveniet perferendis mollitia dignissimos rerum eum sunt nobis
repellat numquam iste. Quaerat porro facilis voluptatem cupiditate.",
"tags" => [
"PHP",
"Laravel",
"JavaScript",
"HTML",
"CSS",
"MySQL"
]
];
$lessons = [
"Gestión de Rutas de Aplicación" => "Creación y configuración de rutas en Laravel.",
"Manejo de Bases de Datos con Eloquent ORM" => "Introducción al ORM Eloquent para interactuar con bases de datos.
Creación y gestión de modelos en Laravel.",
"Validación de Formularios" => "Implementación de validaciones de datos de entrada.",
"Creación de Controladores y Vistas" => "Desarrollo de controladores para manejar la lógica de la aplicación.
Uso de Blade para crear vistas dinámicas."
];
class Autor
{
public function __construct
(
public string $name,
public string $country,
public array $courses
){
}
};
$instructor = new Autor
(
name: "Arthur King",
country: "Mexico",
courses: ["PHP", "JavaScript", "HTML", "CSS", "MySQL"]
)
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $course["title"] ?></title>
</head>
<body>
<h1>Bienvenido al <?= $course["title"] ?></h1>
<h2><?= $course["subtitle"] ?></h2>
<p><?= $course["description"] ?></p>
<p>
<strong>Etiquetas: </strong>
<ul>
<?php foreach($course["tags"] as $tag): ?>
<li><?= $tag ?></li>
<?php endforeach; ?>
</ul>
</p>
<p>
<strong>Lecciones del curso: </strong>
<ul>
<?php foreach($lessons as $key => $value): ?>
<li><strong><?= $key ?> :</strong> <?= $value ?></li>
<?php endforeach; ?>
</ul>
</p>
<p>
<strong>Autor del curso: </strong> <br>
<strong>Nombre:</strong> <?= $instructor->name; ?> <br>
<strong>Pais:</strong> <?= $instructor->country; ?> <br>
<strong>Cursos:</strong>
<ul>
<?php foreach($instructor->courses as $course): ?>
<li><?= $course ?></li>
<?php endforeach ?>
</ul>
</p>
</body>
</html>

<?php
class Course {
public function __construct(
public string $title,
public string $subtitle,
public string $description,
public array $tags
)
{
}
}
$course = new Course(
title:'Curso Profesional de PHP y Laravel',
subtitle:'Crea aplicaciones con PHP',
description:'Curso enfocado en el desarrollo de aplicaciones web usando Laravel.',
tags:['php', 'laravel']
);
class Autores {
public function __construct(
public string $ediciones,
public string $librerias,
public string $titulos,
public array $categoria
)
{}
}
$autores = new autores(
ediciones:'5',
librerias:'porrua',
titulos:'Electro macnetismo',
categoria:['ingenierias','matematicos','fisicos']
);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?=$course->title?></title>
</head>
<body>
<h1>Bienvenido al <?=$course->title?></h1>
<h2>Bienvenido al <?=$course->subtitle?></h2>
<p><?=$course->description?></p>
<p>
<strong>Etiquetas:</strong>
<ul>
<?php //forma 1
foreach ($course->tags as $tag ) {
echo "<li>$tag</li>";
}
?>
</ul>
</p>
<h3>Bienvenidos a <?=$autores->titulos?></h3>
<p>
<strong><?=$autores->librerias?> </strong>
<ul>
<?php foreach ($autores->categoria as $categoria) {
echo "<li>$categoria</li>";
}
?>
</ul>
</p>
</body>
</html>