<?php
/**
* corrected example of object association http://www.php.net/manual/en/ref.objaggregation.php
* two errors :
* 1 parse omitted semi-colon in function DateTimePlus
* 2 $dateTime = $_dt->now(); in generateReport ($_dt is nothing !)
**/
class DateTime {
function DateTime() {
// empty constructor
}
function now() {
return date("Y-m-d H:i:s");
}
}
class DateTimePlus {
var $_format;
function DateTimePlus($format="Y-m-d H:i:s") {
//corrected omitted semi-colon
$this->_format = $format ;
}
function now() {
return date($this->_format);
}
}
class Report {
var $_dt; // we'll keep the reference to DateTime here
// more properties ...
function Report() {
// do some initialization
}
function setDateTime(&$dt) {
$this->_dt =& $dt;
}
function generateReport() {
//$dateTime = $_dt->now();
//corrected =
$dateTime = $this->_dt->now();
// more code ...
return $dateTime;
}
// more methods ...
}
$rep = new Report();
$dt = new DateTime();
$dtp = new DateTimePlus("l, F j, Y (h:i:s a, T)");
// generate report with simple date for web display
$rep->setDateTime($dt);
echo '<pre>';
var_dump($rep);
echo '</pre>';
echo $rep->generateReport();
// later on in the code ...
// generate report with fancy date
$rep->setDateTime($dtp);
echo '<pre>';
var_dump($rep);
echo '</pre>';
$output = $rep->generateReport();
echo $output;
// save $output in database
// ... etc ...
?>
--
http://www.php.net/manual/en/ref.objaggregation.php
http://master.php.net/manage/user-notes.php?action=edit+29986
http://master.php.net/manage/user-notes.php?action=delete+29986
http://master.php.net/manage/user-notes.php?action=reject+29986