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 24

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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 鈥榓tar鈥 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

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!