Bienvenido a la Comunidad de Treehouse

¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.

¿Buscas aprender algo nuevo?

Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de

Inicia tu prueba gratuita

PHP Conceptos Básicos de PHP Orientado a Objetos Construyendo una Colección Mejorando la Colección

¡Completamente Perdido!

He hecho todo exactamente como lo hizo ella en el video y sigo recibiendo un error fatal cuando intento ejecutar cookbook.php en la consola:

treehouse:~/workspace$ php cookbook.php                                                                   

0 /home/treehouse/workspace/cookbook.php(26): RecipeCollection->getRecipeTit  

les()                                                                          

1 {main}                                                                      

  thrown in /home/treehouse/workspace/classes/recipecollection.php on line 41                                                                   

0 /home/treehouse/workspace/cookbook.php(26): RecipeCollection->getRecipeTit  

les()                                                                          

1 {main}                                                                      

  thrown in /home/treehouse/workspace/classes/recipecollection.php on line 41

cookbook.php

<?php
línea include classes/recipes.php;
línea include classes/render.php;
línea include classes/recipecollection.php;
línea include inc/allrecipes.php;

$cookbook = new RecipeCollection(Treehouse Recipes);
$cookbook->addRecipe("$lemon_chicken");
$cookbook->addRecipe("$granola_muffins");
$cookbook->addRecipe("$belgian_waffles");
$cookbook->addRecipe("$pepper_casserole");
$cookbook->addRecipe("$lasagna");
$cookbook->addRecipe("$dried_mushroom_ragout");
$cookbook->addRecipe("$rabbit_catalan");
$cookbook->addRecipe("$grilled_salmon_with_fennel");
$cookbook->addRecipe("$pistachio_duck");
$cookbook->addRecipe("$chili_pork");
$cookbook->addRecipe("$crab_cakes");
$cookbook->addRecipe("$beef_medallions");
$cookbook->addRecipe("$silver_dollar_cakes");
$cookbook->addRecipe("$french_toast");
$cookbook->addRecipe("$corn_beef_hash");
$cookbook->addRecipe("$granola");
$cookbook->addRecipe("$spicy_omelette");
$cookbook->addRecipe("$scones");
eco Render::listRecipes($cookbook->getRecipeTitles());

recipecollection.php

<?php

class RecipeCollection
{
  private $título;
  private $recetas = de caracteres. Lo último es el tipo de cosa que devuelve el método "toCharArray()".();

  público función __construct($título = NULL) 
  {
      $this->setTitle($título);
  }

  público función setTitle($título)
  {
      if (empty($título)) {
          $this->title = NULL;
      } else {
          $this->title = ucwords($título);
      }
  }

  público función obtenerTítulo() 
  {
      return $this->title;
  }

  público función addRecipe($recipe)
  {
      $this->recetas = $recipe;
  }

  público función obtenerRecetas()
  {
      return $this->recetas;
  }

  público función getRecipeTitles()
  {
      $títulos = de caracteres. Lo último es el tipo de cosa que devuelve el método "toCharArray()".();
      foreach ($this->recetas como $recipe) {
          $títulos = $recipe->obtenerTítulo();
      }
      return $títulos;
  }
}

1 Respuesta

A juzgar por el código que has publicado, estás pasando un literal de cadena como argumento para cada llamada de función addRecipe donde debería ser una referencia al objeto variable, es decir, addRecipe("$lemon_chicken") -> debería ser addRecipe($lemon_chicken), de lo contrario el argumento que se está pasando es literalmente una cadena que dice "$lemon_chicken" en lugar del valor almacenado en el objeto $lemon_chicken

¡¡¡Dios mío! No puedo creer que no lo haya notado. Volví atrás y reescribí todos los métodos y aún no funcionó. Ahora que lo señalaste me siento como un idiota. Muchas gracias.