Re: Class not functioning

From: Date: Tue, 15 Dec 2009 02:07:39 +0000
Subject: Re: Class not functioning
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-300506@lists.php.net to get a copy of this message
--- On Tue, 12/15/09, Allen McCabe <allenmccabe@gmail.com> wrote: > From: Allen McCabe <allenmccabe@gmail.com> > Subject: [PHP] Class not functioning > To: "phpList" <php-general@lists.php.net> > 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]

« previous php.general (#300506) next »