Ben, I neglected to add this to my response. You need something like private static $builtMessage; in your Error class.
_____ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Friday, July 27, 2007 10:54 AM To: NYPHP Talk Subject: Re: [nyphp-talk] OOP Error/Question variables can be defined as static also... ----- Original Message ----- From: "Ben Sgro (ProjectSkyLine)" Date: Friday, July 27, 2007 10:52 am Subject: Re: [nyphp-talk] OOP Error/Question To: NYPHP Talk > Hello Andy, > > I tried your 1st, quicker method, I get: > > PHP Fatal error: Access to undeclared static property: > Error::$builtMessage in /var/www/html/sk/OOPLIB/ERRO.php on line 81 > self::$builtMessage = $errorStr; > > builtMessage is declared as: > $this->builtMessage = ''; > in the class. > > I am still learning OOP and had just started it when I wrote > this code ... > So, I may need to rework it, but I'd prefer to not do that right now. > > - Ben > > Ben Sgro, Chief Engineer > ProjectSkyLine - Defining New Horizons > +1 718.487.9368 (N.Y. Office) > > Our company: www.projectskyline.com > Our products: www.project-contact.com > > This e-mail is confidential information intended only for the > use of the individual to whom it is addressed. > ----- Original Message ----- > From: Andy Dirnberger > To: 'NYPHP Talk' > Sent: Friday, July 27, 2007 10:43 AM > Subject: RE: [nyphp-talk] OOP Error/Question > > > Try self::$builtMessage = $errorStr; > > > > Or another option is to adopt the singleton pattern. This > will give you the same instance of the Error object anywhere you > try to use it in your code. > > > > Something like: > > > > class Error { > > private function __constrct () { > > } > > > > public function GetInstance () { > > If (self::$instance == null) self::$instance = new self; > > Return self::$instance; > > } > > > > public function Backtrace () { > > // code from below > > } > > > > private $builtMessage; > > private static $instance = null; > > } > > > > And in your code: > > > > $err = Error::GetInstance (); > > $err->Backtrace (); > > > > > ----------------------------------------------------------------- > ------------- > > From: [EMAIL PROTECTED] [mailto:talk- > [EMAIL PROTECTED] On Behalf Of Ben Sgro (ProjectSkyLine) > Sent: Friday, July 27, 2007 10:29 AM > To: NYPHP Talk > Subject: Re: [nyphp-talk] OOP Error/Question > > > > Hello, > > > > Thanks, both your fixes fixed this issue. > > > > However, it broke it in another place. > > > > PHP Fatal error: Using $this when not in object context in > /var/www/html/sk/OOPLIB/ERRO.php on line 80 > > Inside the Backtrace( ) function I have: > > $this->builtMessage = $errorStr; > > > > To save the message to a string within the object. I can't do > self::builtMessage = $errorStr, > > so what can I do? > > > > Here's the backtrace function: > > > > static function Backtrace( ) > { > $btSet = debug_backtrace( ); > $iValue = 1; /* [0] is the traceback for the Error:: > *///sizeof($btSet) - 1; > $eSet = $btSet[$iValue]; > > $errorStr = "\ndate: " . date('r') > . "\nfile: " . $eSet['file'] > . "\nline: " . $eSet['line'] > . "\nfunction: " . @$eSet['class'] . '::' . > $eSet['function'] . "\nargs: "; > > > > /* Build a list of the functions arguments. */ > while(list($argIndex, $argStr) = each($eSet['args'])) > { > $errorStr .= "[${argIndex}]$argStr "; > } > $this->builtMessage = $errorStr; > } > > > > Which is called from another function: > > case LOG_LEVEL_ALERT: > self::Backtrace( ); > > > > - Ben > > > > > > Ben Sgro, Chief Engineer > ProjectSkyLine - Defining New Horizons > > ----- Original Message ----- > > From: [EMAIL PROTECTED] > > To: NYPHP Talk > > Sent: Friday, July 27, 2007 10:17 AM > > Subject: Re: [nyphp-talk] OOP Error/Question > > > > you're calling Error statically, so there can't be any > object instance references... instead of $this->Backtrace(), use > self::Backtrace(); > ----- Original Message ----- > From: "Ben Sgro (ProjectSkyLine)" > Date: Friday, July 27, 2007 10:10 am > Subject: [nyphp-talk] OOP Error/Question > To: NYPHP Talk > > > Good morning, > > > > So, I have a script where I'm calling: > > > > function ReceivePOPEmail($popObject) > > { > > $error = $popObject->Login($popObject- > > >username,$popObject->password, > > $popObject->apop); > > if ( $error != '' ) > > { > > /* We've had an error. */ > > Error::Log("Error: " . HtmlSpecialChars($error), > > LOG_LEVEL_ALERT); return PROC_FAILURE; > > } > > return PROC_SUCCESS; > > } > > > > that's function ... I don't want to pass the Error Object > > around, so I just want to call it via: > > Error:Log(.....); > > > > Now, inside the Error class, there is this code: > > case LOG_LEVEL_ALERT: > > $this->Backtrace( ); > > > > Which is getting executed. But I'm getting the error: > > > > PHP Fatal error: Using $this when not in object context in > > /var/www/html/sk/OOPLIB/ERRO.php on line 101 > > > > So, how do I call that class's method w/out passing the > object around? > > > > - Ben > > > > > > Ben Sgro, Chief Engineer > > ProjectSkyLine - Defining New Horizons > > > > This e-mail is confidential information intended only for > the > > use of the individual to whom it is addressed. > > > > > ----------------------------------------------------------------- > ----------- > > _______________________________________________ > New York PHP Community Talk Mailing List > http://lists.nyphp.org/mailman/listinfo/talk > > NYPHPCon 2006 Presentations Online > http://www.nyphpcon.com > > Show Your Participation in New York PHP > http://www.nyphp.org/show_participation.php > > > > ----------------------------------------------------------------- > ------------- > > > _______________________________________________ > New York PHP Community Talk Mailing List > http://lists.nyphp.org/mailman/listinfo/talk > > NYPHPCon 2006 Presentations Online > http://www.nyphpcon.com > > Show Your Participation in New York PHP > http://www.nyphp.org/show_participation.php >
_______________________________________________ New York PHP Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk NYPHPCon 2006 Presentations Online http://www.nyphpcon.com Show Your Participation in New York PHP http://www.nyphp.org/show_participation.php