[PHP] Extending Exception

2010-07-21 Thread Christoph Boget
Ok, so taking the sample code that is on the page

http://us3.php.net/manual/en/language.exceptions.extending.php

Literally, just cutting and pasting the code.  When I try to

throw new Exception( 'My Message' );

PHP spits out the following fatal error:

Fatal error: Wrong parameters for Exception([string $exception [, long $code ]])

and the line number it dies on is the line in the
MyException::__construct() where it is calling the parent's
constructor.  So what's going on?  Is the documentation wrong?  Is
this a bug?  Am I doing something wrong?

I'm using PHP 5.2.9.

thnx,
Christoph

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



Re: [PHP] Extending Exception

2010-07-21 Thread Ashley Sheridan
On Wed, 2010-07-21 at 11:10 -0400, Christoph Boget wrote:

 Ok, so taking the sample code that is on the page
 
 http://us3.php.net/manual/en/language.exceptions.extending.php
 
 Literally, just cutting and pasting the code.  When I try to
 
 throw new Exception( 'My Message' );
 
 PHP spits out the following fatal error:
 
 Fatal error: Wrong parameters for Exception([string $exception [, long $code 
 ]])
 
 and the line number it dies on is the line in the
 MyException::__construct() where it is calling the parent's
 constructor.  So what's going on?  Is the documentation wrong?  Is
 this a bug?  Am I doing something wrong?
 
 I'm using PHP 5.2.9.
 
 thnx,
 Christoph
 


Well, it's not really a copy and paste job, as you've omitted the second
argument to the Exception method, which is what the error is complaining
about.

Thanks,
Ash
http://www.ashleysheridan.co.uk




Re: [PHP] Extending Exception

2010-07-21 Thread Richard Quadling
On 21 July 2010 16:10, Christoph Boget jcbo...@hotmail.com wrote:
 Ok, so taking the sample code that is on the page

 http://us3.php.net/manual/en/language.exceptions.extending.php

 Literally, just cutting and pasting the code.  When I try to

 throw new Exception( 'My Message' );

 PHP spits out the following fatal error:

 Fatal error: Wrong parameters for Exception([string $exception [, long $code 
 ]])

 and the line number it dies on is the line in the
 MyException::__construct() where it is calling the parent's
 constructor.  So what's going on?  Is the documentation wrong?  Is
 this a bug?  Am I doing something wrong?

 I'm using PHP 5.2.9.

 thnx,
 Christoph

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



As of V5.3.0, exceptions can be nested [1].

The example code will generate the following errors.

V5.0.x : Fatal error: Argument 3 must not be null
V5.1.0 - V5.1.1 : Fatal error: Wrong parameter count for
exception([string $exception [, long $code ]])
V5.1.1 - V5.2.x : Fatal error: Wrong parameters for Exception([string
$exception [, long $code ]])

The nesting is controlled by the 3rd parameter to the constructor.
Removing this will allow the code to work on your version.

?php
class MyException extends Exception
{
// Redefine the exception so message isn't optional
public function __construct($message, $code = 0) {
// some code

// make sure everything is assigned properly
parent::__construct($message, $code);
}

// custom string representation of object
public function __toString() {
return __CLASS__ . : [{$this-code}]: {$this-message}\n;
}

public function customFunction() {
echo A custom function for this type of exception\n;
}
}

?


Regards,

Richard Quadling.

[1] http://us3.php.net/manual/en/migration53.new-features.php

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



Re: [PHP] Extending Exception

2010-07-21 Thread Richard Quadling
On 21 July 2010 16:14, Ashley Sheridan a...@ashleysheridan.co.uk wrote:
 On Wed, 2010-07-21 at 11:10 -0400, Christoph Boget wrote:

 Ok, so taking the sample code that is on the page

 http://us3.php.net/manual/en/language.exceptions.extending.php

 Literally, just cutting and pasting the code.  When I try to

 throw new Exception( 'My Message' );

 PHP spits out the following fatal error:

 Fatal error: Wrong parameters for Exception([string $exception [, long $code 
 ]])

 and the line number it dies on is the line in the
 MyException::__construct() where it is calling the parent's
 constructor.  So what's going on?  Is the documentation wrong?  Is
 this a bug?  Am I doing something wrong?

 I'm using PHP 5.2.9.

 thnx,
 Christoph



 Well, it's not really a copy and paste job, as you've omitted the second
 argument to the Exception method, which is what the error is complaining
 about.

 Thanks,
 Ash
 http://www.ashleysheridan.co.uk




Ashley, the second argument is optional, hence the [] around the [, long $code].

The issue is one of BC as I've described above. Removing the BC allows
the code to work as documented.

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



Re: [PHP] Extending Exception

2010-07-21 Thread Richard Quadling
On 21 July 2010 16:30, Christoph Boget jcbo...@hotmail.com wrote:
 [1] http://us3.php.net/manual/en/migration53.new-features.php

 Thanks for this.  And thanks for your explanation.  I think it would have
 been nice for there to have been some mention anywhere near/around example
 #2 on http://us3.php.net/manual/en/language.exceptions.extending.php to have
 mentioned it would only work on 5.3+.  :/
 Again, thanks.
 thnx,
 Christoph

http://svn.php.net/viewvc?view=revisionrevision=301446

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