Jump to content
Larry Ullman's Book Forums

packmac2

Members
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Neutral

About packmac2

  • Rank
    Newbie
  1. I've been banging on the following error for awhile and I cannot tell what is wrong, please help: Catchable fatal error: Argument 2 passed to ShapeFactory::Create() must be an array, string given, called in /home/content/14/11625314/html/AdvPHPwOOP/factory.php on line 22 and defined in /home/content/14/11625314/html/AdvPHPwOOP/ShapeFactory.php on line 11 I'm using PHP 5.3 thru goDaddy Here's the code: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Factory</title> <link rel="stylesheet" href="style.css"> </head> <body> <?php # Script 7.4 - factory.php // This page uses the ShapeFactory class (Script 7.2). // Load the class definitions: require('ShapeFactory.php'); require('Shape.php'); require('Triangle.php'); require('Rectangle.php'); // Minimal validation: if (isset($_GET['shape'], $_GET['dimensions'])) { // Create the new object: $obj=ShapeFactory::Create($_GET['shape'],$_GET['dimensions']); // Print a little introduction: echo "<h2>Creating a {$_GET['shape']}...</h2>"; // Print the area: echo '<p>The area is ' . $obj->getArea() . '</p>'; // Print the perimeter: echo '<p>The perimeter is ' . $obj->getPerimeter() . '</p>'; } else { echo '<p class="error">Please provide a shape type and size.</p>'; } // Delete the object: unset($obj); ?> </body> </html> **************** <?php # Script 7.3 - ShapeFactory.php // This page defines a ShapeFactory class which uses the Factory pattern. /* The ShapeFactory class. * The class contains no attributes. * The class contains one method: Create(). */ abstract class ShapeFactory { // Static method that creates objects: static function Create($type, array $sizes) { // Determine the object type based upon the parameters received. switch ($type) { case 'rectangle': return new Rectangle($sizes[0], $sizes[1]); break; case 'triangle': return new Triangle($sizes[0], $sizes[1], $sizes[2]); break; } // End of switch. } // End of Create() method. } // End of ShapeFactory class.
×
×
  • Create New...