NYCPHP Meetup

NYPHP.org

[nycphp-talk] OOP Error/Question

Andy Dirnberger dirn at dirnonline.com
Fri Jul 27 11:12:35 EDT 2007


Ben, I neglected to add this to my response.  You need something like
private static $builtMessage; in your Error class.

 

  _____  

From: talk-bounces at lists.nyphp.org [mailto:talk-bounces at lists.nyphp.org] On
Behalf Of drydell at optonline.net
Sent: Friday, July 27, 2007 10:54 AM
To: NYPHP Talk
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
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20070727/dec19c3a/attachment.html>


More information about the talk mailing list