Als ik hieronder staande code laat uitvoeren dan krijg ik
Warning: array_search(): Wrong datatype for second argument in
Ik weet dat het te maken heeft met dat het iets met overerfing te maken heeft.
Dit in function Blok() zetten:
$this->cTemplate();
<b>Krijg ik geen foutmelding maar ook geen uitvoer want pagina wordt wel ingelezen maar niet vervangen en de uitvoer wordt niet gegeven
<b>
Aanroep:
$blok1 = new Blok();
$blok1->SetBlokname('textblok');
$blok1->SetBlok('Text' , '1 Werkt dit of werkt dit niet');
$blok1->SetBlok('Texta' , '2 Wat is er aan de hand');
$blok1->SetBlok('border' , '"2"');
echo $blok1->ContentBlok();
Template.php
<?
class Blok extends cTemplate
{
////////////////////////////////////////////
// Constructor, deze functie wordt altijd automatisch aangeroepen
// bij het maken van een object
//
function Blok()
{
}
Function SetBlokname($bBlokname)
{
$bBlokname = 'blokken/' . $bBlokname . ".mtp";
$this->setFileName($bBlokname);
}
Function SetBlok($pmPattern, $pmVal)
{
$this->setVal($pmPattern, $pmVal);
}
Function ContentBlok()
{
$this->getContents();
}
}
class cTemplate
{
var $sFilename;
var $aPlaceholders;
var $aReplacements;
var $sContent;
////////////////////////////////////////////
// Constructor, deze functie wordt altijd automatisch aangeroepen
// bij het maken van een object
//
function cTemplate()
{
$this->sFilename = '';
$this->sContent = '';
$this->aPlaceholders = array();
$this->aReplacements = array();
}
////////////////////////////////////////////
// Stel de naam van de template in
//
function setFileName($psFilename)
{
// Bestaat het bestand?
if (!file_exists($psFilename))
{
echo 'Template file '.$psFilename.' bestaat niet!';
return false;
}
else
{
$this->sFilename = $psFilename;
return true;
};
}
////////////////////////////////////////////
// Stel de vervangende waarde van een placeholder in
//
function setVal($pmPattern, $pmVal)
{
// Voeg een placeholder toe, maar alleen als hij nog niet bestond
// We willen uiteraard overschrijven, en niet toevoegen, want je kunt 1 placeholder
// toch maar met 1 waarde vervangen
//
$pmPattern = '['.$pmPattern.']';
$bFound = false;
$iPos = array_search($pmPattern, $this->aPlaceholders);
if ($iPos === FALSE)
{
$this->aPlaceholders[] = $pmPattern;
$this->aReplacements[] = $pmVal;
}
else
{
$this->aPlaceholders[$iPos] = $pmPattern;
$this->aReplacements[$iPos] = $pmVal;
}
}
////////////////////////////////////////////
// Lees het bestand, vervang de placeholders en geef de uitvoer terug
//
function getContents()
{
if (!$fp = fopen($this->sFilename, 'r'))
{
echo 'Could not open template';
return false;
}
else
{
$this->sContent = fread($fp, filesize($this->sFilename));
fclose($fp);
}
// Do the search and replace
//
$sContent = str_replace($this->aPlaceholders, $this->aReplacements, $this->sContent);
//Output the page
//
return $sContent;
}
}
?>
Warning: array_search(): Wrong datatype for second argument in
Ik weet dat het te maken heeft met dat het iets met overerfing te maken heeft.
Dit in function Blok() zetten:
$this->cTemplate();
<b>Krijg ik geen foutmelding maar ook geen uitvoer want pagina wordt wel ingelezen maar niet vervangen en de uitvoer wordt niet gegeven
<b>
Aanroep:
$blok1 = new Blok();
$blok1->SetBlokname('textblok');
$blok1->SetBlok('Text' , '1 Werkt dit of werkt dit niet');
$blok1->SetBlok('Texta' , '2 Wat is er aan de hand');
$blok1->SetBlok('border' , '"2"');
echo $blok1->ContentBlok();
Template.php
<?
class Blok extends cTemplate
{
////////////////////////////////////////////
// Constructor, deze functie wordt altijd automatisch aangeroepen
// bij het maken van een object
//
function Blok()
{
}
Function SetBlokname($bBlokname)
{
$bBlokname = 'blokken/' . $bBlokname . ".mtp";
$this->setFileName($bBlokname);
}
Function SetBlok($pmPattern, $pmVal)
{
$this->setVal($pmPattern, $pmVal);
}
Function ContentBlok()
{
$this->getContents();
}
}
class cTemplate
{
var $sFilename;
var $aPlaceholders;
var $aReplacements;
var $sContent;
////////////////////////////////////////////
// Constructor, deze functie wordt altijd automatisch aangeroepen
// bij het maken van een object
//
function cTemplate()
{
$this->sFilename = '';
$this->sContent = '';
$this->aPlaceholders = array();
$this->aReplacements = array();
}
////////////////////////////////////////////
// Stel de naam van de template in
//
function setFileName($psFilename)
{
// Bestaat het bestand?
if (!file_exists($psFilename))
{
echo 'Template file '.$psFilename.' bestaat niet!';
return false;
}
else
{
$this->sFilename = $psFilename;
return true;
};
}
////////////////////////////////////////////
// Stel de vervangende waarde van een placeholder in
//
function setVal($pmPattern, $pmVal)
{
// Voeg een placeholder toe, maar alleen als hij nog niet bestond
// We willen uiteraard overschrijven, en niet toevoegen, want je kunt 1 placeholder
// toch maar met 1 waarde vervangen
//
$pmPattern = '['.$pmPattern.']';
$bFound = false;
$iPos = array_search($pmPattern, $this->aPlaceholders);
if ($iPos === FALSE)
{
$this->aPlaceholders[] = $pmPattern;
$this->aReplacements[] = $pmVal;
}
else
{
$this->aPlaceholders[$iPos] = $pmPattern;
$this->aReplacements[$iPos] = $pmVal;
}
}
////////////////////////////////////////////
// Lees het bestand, vervang de placeholders en geef de uitvoer terug
//
function getContents()
{
if (!$fp = fopen($this->sFilename, 'r'))
{
echo 'Could not open template';
return false;
}
else
{
$this->sContent = fread($fp, filesize($this->sFilename));
fclose($fp);
}
// Do the search and replace
//
$sContent = str_replace($this->aPlaceholders, $this->aReplacements, $this->sContent);
//Output the page
//
return $sContent;
}
}
?>