[nycphp-talk] OOP Error/Question
drydell at optonline.net
drydell at optonline.net
Fri Jul 27 10:54:29 EDT 2007
variables can be defined as static also...----- Original Message -----From: "Ben Sgro (ProjectSkyLine)" Date: Friday, July 27, 2007 10:52 amSubject: Re: [nycphp-talk] OOP Error/QuestionTo: 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: [nycphp-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: talk-bounces at lists.nyphp.org [mailto:talk-> bounces at lists.nyphp.org] On Behalf Of Ben Sgro (ProjectSkyLine)> Sent: Friday, July 27, 2007 10:29 AM> To: NYPHP Talk> Subject: Re: [nycphp-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: drydell at optonline.net > > To: NYPHP Talk > > Sent: Friday, July 27, 2007 10:17 AM> > Subject: Re: [nycphp-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: [nycphp-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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20070727/ee91c675/attachment.html>
More information about the talk
mailing list