You are here: Re: I need $this->self to be identical to and reference to $this, but how in PHP 5.2+? « All PHP « IT news, forums, messages
Re: I need $this->self to be identical to and reference to $this, but how in PHP 5.2+?

Posted by Hendri Kurniawan on 01/08/07 13:19

comp.lang.php wrote:
> [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
>


Singleton... I like... :)

<?php
function & generateSelf() {
static $self = null;
if(is_null($self)) $self = new EditResultGenerator();
return $self;
}
?>


Hendri Kurniawan

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация