Re: Class not functioning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey all (and Nirmalya, thanks for the help!),


I have a question that I just can't seem to find via Google.

I want to be able to add messages to a qeue whenever my classes complete (or
fail to complete) specific functions. I think have a call within my html to
my Notifier class to print all qeued messages (via a function 'printQ').

How do I access a globally instantiated class from within another class?

Example:

<?php

// INSTANTIATE
$Meetgreet = new Meetgreet;
$Notify = new Notifier;

...
...

$Meetgreet->deleteSingle($id, 1); // This completes a function within
Meetgreet class. That function needs to be able to use the Notifier function
addtoQ(), how would this be accomplished?

?>
...
...

<?php  $Notify->printQ()  ?>

On Mon, Dec 14, 2009 at 6:07 PM, Nirmalya Lahiri
<nirmalyalahiri@xxxxxxxxx>wrote:

> --- On Tue, 12/15/09, Allen McCabe <allenmccabe@xxxxxxxxx> wrote:
>
> > From: Allen McCabe <allenmccabe@xxxxxxxxx>
> > Subject:  Class not functioning
> > To: "phpList" <php-general@xxxxxxxxxxxxx>
> > Date: Tuesday, December 15, 2009, 6:17 AM
>  > Hey everyone, I just delved into
> > classes recently and have been having
> > moderate success so far.
> >
> > I have a puzzler though.
> >
> > I have the following class decalred and instantiated:
> >
> > class Notify {
> >  var $q = array();
> >
> >  public function addtoQ($string, $class)
> >  {
> >   $message = '<span class="'. $class .'">'.
> > $string .'</span>';
> >   $this->q[] = $message;
> >  }
> >
> >  public function printQ()
> >  {
> >   if (isset($q))
> >   {
> >    echo '<p align="center"
> > class="notification">';
> >    foreach($this->q as $msg)
> >    {
> >     echo $msg ."\n";
> >    }
> >    echo '</p>';
> >   }
> >
> >   return;
> >  }
> >
> >  function __destruct()
> >  {
> >   if (isset($q))
> >   {
> >    unset($this->q);
> >   }
> >  }
> > } // END CLASS Notify
> >
> >
> > And in my script, I call it like so:
> > $Notif = new Notify;
> >
> > I have run other statements in other classes that should be
> > adding to the $q
> > array (ie. Notify::addtoQ('ERROR! There Was An Error
> > Updating The
> > Database!', 'error');)
> >
> > However, when I try to get my webpage to display them
> > using:
> >
> > $Notify->printQ();
> >
> > it does not seem to want to loop through this array (and
> > print the
> > messages). I am getting NO error message, in fact
> > everything 'looks' fine,
> > I'm just not seeing the appropriate message.
> >
> > Any help would be appreicated!
> >
>
> Allen,
>  You have made a small typing mistake in function printQ() where you would
> like to checked the array for its existence. By mistake you have wrote "if
> (isset($q))". But your array variable is not an freely accessible array,the
> array is embedded into an object. So, you have to write the like "if
> (isset($this->q))".
>
>  Another point, you can't add a message into the array by calling the
> member function addtoQ() using scope resolution operator "::". If you really
> want to add message into the array, you have to call the member function
> from within the object. (ie. $Notif->addtoQ('ERROR! There Was An Error
> Updating The Database!', 'error');).
>
> ---
> নির্মাল্য লাহিড়ী [Nirmalya Lahiri]
> +৯১-৯৪৩৩১১৩৫৩৬ [+91-9433113536]
>
>
>
>
>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux