NYCPHP Meetup

NYPHP.org

[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