|
Posted by comp.lang.php on 01/08/07 09:56
[PHP]
<?
class EditResultGenerator extends MethodGeneratorForActionPerformer {
/**
* Create an instance of itself if $this does not yet exist as an
EditResultGenerator class object
*
* @access private
* @see is_class
*/
function &generateSelf() { // STATIC VOID METHOD
if (!is_object($this) || @!is_class($this, 'EditResultGenerator')) {
$this->self =& new EditResultGenerator();
} else {
$this->self =& $this;
}
}
}
?>
[/PHP]
This self-generating function serves a purpose to ensure that if part
of the application does this:
[PHP]
<?
EditResultGenerator::getResult();
?>
[/PHP]
That it will work *exactly* the same as if I did this:
[PHP]
<?
$edit =& new EditResultGenerator();
$result = $edit->getResult();
?>
[/PHP]
However, I cannot change hundreds of lines of code from the former to
the latter just to ensure instantiation is uniform, so I'm stuck with
the fact that I have to generate a $this->self EditResultGenerator
class object if $this does not exist, otherwise, $this->self must be
*absolutely identical* to $this, in fact, be a reference!
This works beautifully in PHP 4.3+, but bombs in PHP 5.2.
How can I get it to work in PHP 5.2+?
Phil
Navigation:
[Reply to this message]
|