Hi
OOP is new to me, and the manual has not helped me on this one:
What am I doing wrong? I am getting an error message about calling an undefined
function. I defined the method (function) in the class definitions, but when I create
an instance, I get the error message mention above.
By the way, I tested the function by embedding it inside some html coding, and it
worked.
Evidently, I still don't understand the OOP process. Can someone point me in the
right direction? Below, please find my coding listed as CLASS DEFINITIONS(1 and 2),
INSTANCE, AND HTML : ( I did not include the .css file)
CLASS DEFINITIONS (1):
<?php
//This class reads in a template, sets the different values, and sends it to the
browser.
class HtmlTemplate {
//Set the attributes.
var $template;
var $html;
var $parameters = array();
function IdentifyTemplate ($template) {
//This function sets which template will be used.
$this->template = $template;
}
function SetParameter($variable,$value) {
//This function sets the particular values.
$this->parameters[$variable] = $value;
}
function CreatePage() {
//This function does the bulk of the work.
$this->html = implode ("",(file($this->template))); //Read the template into an
array, then
//create a string.
foreach ($this->parameters as $key => $value) {
//Loop through all the parameters and set the variables to values.
$template_name = '{' . $key . '}';
$this->html = str_replace($template_name, $value, $this->html);
}
echo $this->html;
}
}
?>
CLASS DEFINITION (2): //***THE PrintImage FUNCTION GIVES ME THE ERROR MESSAGE***
<?php
//This class is an extension of the HtmlTemplate class.
//It adds the print_image funcion which calls the make_image function.
//These two functions combined print an IMG tag for a given file.
class HtmlTemplateImages extends HtmlTemplate {
//No attributes are necessary because of existing ones in parent class.
function MakeImage($file, $alt=false, $align=false, $extras=false, $dir=false,
$border=0) {
global $size, $image;
global $HTTP_SERVER_VARS;
if (!$dir) {
$dir = 'images';
}
if ($size = @getimagesize($HTTP_SERVER_VARS['DOCUMENT_ROOT'].$dir.'/'.$file)) {
$image = sprintf('<img src="%s/%s" border="%d" %s ALT="%s" %s%s >',
$dir,
$file,
$border,
$size[3],
($alt ? $alt : ''),
($align ? ' align="'.$align.'"' :''),
($extras ? ' '.$extras :'')
);
} else {
$image = sprintf('<img src="%s/%s" border="%d" ALT="%s" %s%s >',
$dir,
$file,
$border,
($alt ? $alt : ''),
($align ? ' ALIGN="'.$align.'"' : ''),
($extras ? ' '.$extras : '')
);
}
return $image;
}
function PrintImage($file, $alt=false, $align=false, $extras=false, $dir=false,
$border=0) {
print MakeImage($file, $alt, $align, $extras, $dir);
}
}
?>
INSTANCE:
<?php
//This is a sample page that uses the HtmlTemplate class and the child class
HtmlTemplateImages.
require_once "HtmlTemplate.inc"; //Include the parent class.
require_once "HtmlTemplateImages.inc"; //Include the child class.
$page = new HtmlTemplate(); //Create an instance.
$page->IdentifyTemplate ("EjebTemplate.inc"); //Identify the template to use for this
//application.
$page->SetParameter ("CSS_LINK", "ejebstyle.css");
$page->SetParameter ("EJEB_LOGO", $page->PrintImage('topgrey.jpg', 'EJEB'));
$page->SetParameter ("EJEB_SOLUTIONS", "eJeb Solutions");
$page->CreatePage(); //Send the page to the browser.
?>
HTML:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel=stylesheet href="{CSS_LINK}" type="text/css">
</head>
<body>
<table width="720" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td height="50" colspan="3" valign="top">{EJEB_LOGO}</td>
<td colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
<td colspan="4" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td width="120" height="25" valign="top"><p>{EJEB_SOLUTIONS}</p></td>
<td colspan="3" valign="top"><!--DWLayoutEmptyCell--> </td>
<td colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
<td colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
<td width="180" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td height="25" colspan="3" valign="top"><!--DWLayoutEmptyCell--> </td>
<td colspan="4" valign="top"><!--DWLayoutEmptyCell--> </td>
<td colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td colspan="2" rowspan="4" valign="top"><!--DWLayoutEmptyCell--> </td>
<td colspan="5" rowspan="3" valign="top"><!--DWLayoutEmptyCell--> </td>
<td height="50" colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td height="50" colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td height="50" colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td colspan="5" valign="top"><!--DWLayoutEmptyCell--> </td>
<td width="60" height="450"></td>
<td></td>
</tr>
<tr>
<td height="0"></td>
<td width="80"></td>
<td width="40"></td>
<td width="60"></td>
<td width="60"></td>
<td width="60"></td>
<td width="60"></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>