No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aplicar lo aprendido: Libro de visitas

25/26
Recursos

Aportes 25

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para los que quieran echarle un ojo (en los enlaces faltó el link de github):

git clone https://github.com/mchojrin/GuestBook.git

Debo reforzar conocimientos de PHP y POO
Me queda claro las prácticas que tuvo, pero desconozco un poco el lenguaje

Genial, y si no me equivoco, la clase MessageBag podría aplicarse al patrón de diseño Singleton, ya que realmente solo necesitaremos una instancia de esa clase en todo el proyecto, empezaré a aplicar todos estos consejos!

El único problema es JavaScript, que realmente no tiene una base fuerte de POO, pero si no me equivoco he visto por ahí algo llamado TypeScript que si lo tiene, sería cuestión de verlo:D

Excelente ejemplo. Muchas gracias, profesor. Parece trivial, pero muchos proyectos que he visto no tienen algo de tipo MessageBag, incluyendo algunos de mi autoría 😂. Lo importante es que poco a poco se va aprendiendo a escribir mejor código.

Me queda claro que debo reforzar mis conocimientos de programación orientada objetos, al parecer hace la vida mucho más fácil.

El ejemplo esta bien realizado, me hubiera gustado que se grabara desde cero. Aunque con el repositorio se guía uno.
Buen video.

muy buen resumen y me llamo la atención o de los serielizadores que convierten un objeto a string.

Ese ejemplo me hizo mucho más sentido

Quiero compartirles una pequena modificacion en el archivo index.php
No impacta la logica de la aplicacion, tiene que ver con dos tecnicas que aprendi:
.
Dependency Injection: Se encarga de ‘atar’ a la aplicacion ciertos recursos, cosas como el archivo de configuracion.
Separation of Concerns: Simplemente para separar logica de programacion de logica de presentacion, cree carpeta views.
.

Nota: el monton de comentarios es para entender bien la explicacion del profesor (para mi yo del futuro)

<?php

// Este es un front controller, el PUNTO DE ENTRADA de la aplicacion

require_once __DIR__ . '/../vendor/autoload.php';
// Buenas practica: evitar hardcoding, archivo de configuraciones
require_once __DIR__ . '/../core/bootstrap.php';


use App\MessageBag;
use App\CommentsRepository;
use App\CommentsJsonSerializer;


// Buena practica: evitar hardcoding
$trans = new MessageBag(require_once __DIR__ . '/../config/messages.php');

// serializador: transformar un objeto en una representacion de texto
$commentsSerializer = new CommentsJsonSerializer();

// Modifico usando inyeccion de dependencias
$commentsRepo = new CommentsRepository((App::get('config')['comments_file']), $commentsSerializer);

$comments = $commentsRepo->read();

require('../views/index.view.php');

Excelente llevar a la practica los conceptos eseñados

Todo muy claro. Gracias

Supongo que todo esto será más claro una vez me haya visto el curso de Test Driven Development...

Despues de varias horas de hacer correcciones al codigo de acuerdo a las pruebas, casi lo he logrado:

Comment
 ✔ New comments will be dated with current date if not explicitly provided
 ✔ New comments will be dated with parameter if explicitly provided

Comments Json Serializer
 ✔ Serialize will return valid json
 ✔ Unserialize will return an array of comments

Comments Repository
 ✔ Get comments will return a comments array

Meesage Bag
 ✔ Translate

Time: 00:00.011, Memory: 6.00 MB

OK (6 tests, 9 assertions)

F:\laragon\www\2022-Platzi\08-Patrones-Diseno\04-proyecto-guestbook>

Sin embargo tengo problemas con esta prueba:

    public function testUnserializeASerializedCommentWillReturnTheOriginalComment()
    {
        $sut = new CommentsJsonSerializer();
        $date = new DateTimeImmutable('first day of last month');

        // die(var_dump($date['date']));

        $comments = [
            new Comment(
                'Mauro',
                'A comment',
                $date
            )
        ];

        $this->assertEquals($comments, $sut->unserialize($sut->serialize($comments)));
    }

Arroja:

Comments Json Serializer
 ✘ Unserialize a serialized comment will return the original comment
   ┐
   ├ Failed asserting that two arrays are equal.       
   ├ --- Expected
   ├ +++ Actual
   ├ @@ @@
   ├      0 => App\Comment Object (
   ├          'author' => 'Mauro''contents' => 'A comment'
   ├ -        'date' => 2022-08-01T04:26:49.967968+0000
   ├ +        'date' => 2022-08-01T04:26:49.000000+0000
   ├      )
   ├  )

Gracias, buen contenido

me gusto bastante este curso desde hace tiempo queria investigar sobre TDD y Patterns.

La del diccionario es súper útil

Sarasa… Argentinidadas XD

Está fallando el archivo de test CommentsRepositoryTest.php porque le esta enviando un solo argumento al constructor de la clase CommentsRepository, no sé porque si en el video está todo completo

Excelente ejemplo, lo único es que no pude instalar correctamente el entorno de pruebas para poder aplicar los conocimientos

Es muy bueno ver en la practica el uso de lo aprendido. A veces lo mas dificil no es entender los conceptos sino utilizarlos en nuestras aplicaciones dejando de lado los viejos vicios.

Ese ejemplo me hizo mucho más sen

que bueno Palito Ortega! xD

Excelente aplicación!

Excelente el ejemplo

Ahora nos toca practicar lo aprendido!