Re: Globally accessible objects without using 'global $obj;'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Chris,

Something that worked out very well for me was using a function that
would take care of the error handling ... kind of

<?php

define ( 'ERR_TYPE_ERROR' , 1 ) ;
define ( 'ERR_TYPE_WARNING' , 2 ) ;

class Error {
    // error handling code here
}

function _handleError ( $msg , $type ) {
   static $errClass ;

   if ( is_class ( $errClass ) === FALSE ) {
      $errClass = new Error();
   }

   // hand $msg to $errClass here ...
}

function raiseError ( $msg ) {
   return _handleError ( $msg , ERR_TYPE_ERROR ) ;
}

function raiseWarning ( $msg ) {
   return _handleError ( $msg , ERR_TYPE_WARNING ) ;
}

?>

But today i prefer using PHPs build-in Error-Handling functions
using the 2 Errorlevels ( E_USER_NOTICE, E_USER_WARNING
and E_USER_ERROR ) for my debugging and error-handling.

But looking at PHP5's try-throw-catch constructs makes me think
about rewritting large parts of my current project :-/

 -- red

Chris W. Parker wrote:
Hello,

Ok so I'm trying to write an error reporting class and I'm just sort of
experimenting at this point (comments outside the scope of this email
are welcome btw) with how to best implement it. One idea I had (which
isn't working out as well as I'd hoped thus far) is to create an
instance of my error class (incidentally called 'Error') at the start of
each page and then reference that instance from within all other objects
and functions.

Maybe this would be best explained with some code:

<?php

	$e = new Error();

	function my_function()
	{
		// do stuff
		if($this == $that)
		{
			$e->RaiseError();
		}
	}

?>

Of course, that doesn't work because my_function() doesn't know anything
about $e unless I put a special statement into my_function().

<?php

	function my_function()
	{
		// here's the new line
		global $e;

		// do stuff
		...
	}

?>

I already don't like the idea of having to put 'global $e;' within each
and every function/method I write. Should I abandon this idea and try
something else? If so, what?

Here is my first idea just fyi.

<?php

	function my_function()
	{
		$e = new Error();

		// do stuff
		if($this == $that)
		{
			$e->RaiseError();
		}
		else
		{
			// continue like normal
		}

		// get ready to return a response
		if($e->error_count > 0)
		{
			return $e;
		}
		else
		{
			// return something else
		}
	}

?>

Now to use my_function() within a page I have to always assign the
result to a variable so that I can determine whether or not any errors
occured within the function.

<?php

	$result = my_function();

	if($result->error_count > 0)
	{
		// an error occurred
		$result->DisplayErrors();
	}

?>

But that also seems like a hassle (but maybe it's a completely necessary
hassle?). I've looked around the internets for a while but have not
found any REALLY useful documents on managing errors (could be that I've
not found the write article yet) and such so any
comments/pointers/links/etc. are very welcome.

What I'd ultimately like to do is be able to return more than just a
true/false from a function regarding it's end state. For example, a
function could fail for multiple reasons and just returning a plain
false for all situations does not suffice.


Thank you for making it this far. Chris.

-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux