Listo!
Mi estructura de archivos es:
+ Blog: {
+src: {
-Author.php
-Category.php
-Post.php
-User.php
}
+vendor: { ... }
-composer.json
-composer.lock
-index.php
}
composer.json:
{
"name": "retaxmaster/post",
"description": "Proyeto de OOP",
"autoload": {
"psr-4": {
"Blog\\": "src/"
}
}
}
Author.php:
<?php
namespace Blog;
class Author extends User {
protected $created_posts;
protected $posts = [];
public function create_post(Post $post) {
$this->posts[] = $post;
}
public function get_postst() : array {
return $this->posts;
}
}
?>
Category.php:
<?php
namespace Blog;
class Category {
protected $name;
public function set_name(string $name) {
$this->name = $name;
}
public function get_name() : string {
return $this->name;
}
}
?>
Post.php:
<?php
namespace Blog;
class Post {
protected $title;
protected $content;
protected $category;
public function add_category(Category $category) {
$this->category = $category;
}
public function add_title(string $title) {
$this->title = $title;
}
public function add_content(string $content) {
$this->content = $content;
}
public function get_post() : string {
return "<strong>Título:</strong> $this->title <br> <strong>Contenido:</strong> $this->content <br> <strong>Categoría:</strong> {$this->category->get_name()}";
}
}
?>
User.php:
<?php
namespace Blog;
class User {
protected $name;
protected $last_name;
public function set_name(string $name, string $last_name) {
$this->name = $name;
$this->last_name = $last_name;
}
public function get_full_name() : string {
return $this->name . " " . $this->last_name;
}
}
?>
index.php:
<?php
include __DIR__ . "/vendor/autoload.php";
use Blog\Author;
use Blog\Category;
use Blog\Post;
// Primero creo las categorías
// Categoría PHP
$php_category = new Category();
$php_category->set_name("PHP");
// Categoría VueJS
$vue_category = new Category();
$vue_category->set_name("VueJS");
// Ahora creo al autor
$retaxmaster = new Author();
$retaxmaster->set_name("Carlos", "Gómez");
// Ahora creo un post sobre PHP
$php_functions_post = new Post();
$php_functions_post->add_title("Post para hablar acerca de funciones en PHP");
$php_functions_post->add_content("En este post hablaremos sobre cómo funcionan las funciones en PHP");
$php_functions_post->add_category($php_category);
// Ahora creo un post sobre VueJS
$vue_app_post = new Post();
$vue_app_post->add_title("Post sobre cómo crear una app con VueJS");
$vue_app_post->add_content("En este post hablaremos sobre qué necesitamos para crear una app con VueJS");
$vue_app_post->add_category($vue_category);
// Ahora le asigno los posts al autor
$retaxmaster->create_post($php_functions_post);
$retaxmaster->create_post($vue_app_post);
// Y por último listamos los posts
$author_post = $retaxmaster->get_postst();
foreach ($author_post as $post) {
echo "El usuario {$retaxmaster->get_full_name()} tiene el siguiente post: <br><br>";
echo $post->get_post();
echo "<br><br><br>";
}
?>
It works 😄!
Excelente curso ❤️
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?