NYCPHP Meetup

NYPHP.org

[nycphp-talk] OOP Error/Question

Ben Sgro (ProjectSkyLine) ben at projectskyline.com
Fri Jul 27 11:12:18 EDT 2007


Thanks to all, 

I ended up just passing the object to the function.

- 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:54 AM
  Subject: Re: [nycphp-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: [nycphp-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: [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
  > 


------------------------------------------------------------------------------


  _______________________________________________
  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/7ccb033d/attachment.html>


More information about the talk mailing list