<?php 
  // have to put this into a php block or the <?xml will be put as a PHP syntax error on extended code escape 
  echo '<?xml version="1.0" encoding="UTF-8"?>'; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
  <!-- Generic browser family --> 
  <title>DomCore Demos, a WebAbility® Network Project</title> 
  <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
  <meta http-equiv="Expires" content="-1" /> 
 
  <meta name="Keywords" content="WAJAF, WebAbility" /> 
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
  <meta name="Charset" content="UTF-8" /> 
  <meta name="Language" content="en" /> 
  <link rel="stylesheet" href="/skins/css/domcore.css" type="text/css" /> 
 
</head> 
<body> 
 
<div class="container"> 
 
<a href="../index.html" class="back">« Back to the index</a><br /> 
<br /> 
 
<h1>\patterns\Factory example</h1> 
 
<?php 
 
// We assure any DomCore library we call will be automatically loaded 
include_once '../include/__autoload.lib'; 
 
setlocale(LC_ALL, 'es_MX.UTF8'); 
// We have to set NUMERIC to C on mexican locale, since there is a HUGE bug on the use of , instead or . for numeric coma (we use float numbers later in the code) 
setlocale(LC_NUMERIC, 'C'); 
date_default_timezone_set('America/Mexico_City'); 
 
define ('WADEBUG', false); 
 
class Integer 
{ 
  private $i; 
  function __construct($data = 0) { $this->i = (int)$data; } 
  function get() { return $this->i; } 
} 
 
class Real 
{ 
  private $r; 
  function __construct($data = 0) { $this->r = (float)$data; } 
  function get() { return $this->r; } 
} 
 
class Complex 
{ 
  private $cx, $cy; 
  function __construct($x = 0, $y = 0) { $this->cx = (float)$x; $this->cy = (float)$y; } 
  function get() { return '['.$this->cx.','.$this->cy.']'; } 
} 
 
class Point 
{ 
  private $px, $py, $pz; 
  function __construct($x = 0, $y = 0, $z = 0) { $this->px = (float)$x; $this->py = (float)$y; $this->pz = (float)$z; } 
  function get() { return '['.$this->px.','.$this->py.','.$this->pz.']'; } 
} 
 
class myFactory extends \patterns\Factory 
{ 
  function __construct() 
  { 
    parent::__construct(array('i' => 'Integer', 'r' => 'Real', 'c' => 'Complex')); 
  } 
} 
 
print "Our factory build numbers, we have Integer (i), Real (r) and Complex (c) numbers available:<br />"; 
print "Lets build one of each.<br />"; 
 
$F = new myFactory(); 
$I = $F->newProduct('i', 4.6); 
$R = $F->newProduct('r', 8.6); 
$C = $F->newProduct('c', 12.6, -4); 
 
print "A result with our integer ".$I->get() . "<br />"; 
print "A result with our real ".$R->get() . "<br />"; 
print "A result with our complex ".$C->get() . "<br /><br />"; 
 
print "Lets add a 4th product: the space point.<br />"; 
$F->registerProduct('p', 'Point'); 
print "Lets build a point.<br />"; 
$P = $F->newProduct('p', 2, 3, 4); 
print "A result with our point ".$P->get() . "<br />"; 
 
?> 
 
<br /> 
<br /> 
<br /> 
<br /> 
 
<a href="../index.html" class="back">« Back to the index</a><br /> 
 
</div> 
 
</body> 
</html> 
 
 |