Error Subclasses
| From: | Aaron Piotrowski | Date: | Mon, 06 Jul 2015 06:15:50 +0000 |
| Subject: | Error Subclasses | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-87038@lists.php.net to get a copy of this message | ||
Hello everyone!
I recently pushed changes that eliminated E_EXCEPTION and allows an exception type to be provided
for what were fatals in PHP, while still falling back to an E_ERROR if necessary.
Since more specific Error classes can be thrown, I'd like to propose the following additions to
the Error tree of exceptions: AccessError and IdentifierError.
AccessError - Thrown when trying attempting to call a public, private, or abstract method, when
statically calling a non-static method, or trying to use self::, parent::, or static:: outside of a
class.
IdentifierError - Thrown when referencing an undefined function, method, class, constant, etc.
I’ve created a patch that implements the exceptions above as well as updating all the related
tests: https://github.com/trowski/php-src/tree/error-subclasses
<https://github.com/trowski/php-src/tree/error-subclasses>
This patch also broadens the usage of TypeError to include conditions such as calling a method on a
scalar, passing a value that does not specify a callback when one is expected, and various other
conditions based on an incorrect type that otherwise are throwing plain Error objects.
This patch introduces no functional changes, only more specific types of Errors are thrown from
conditions that were already throwing Error objects.
I was hoping this could be merged before beta 1, though I’m not sure if the time table is too
tight.
Cheers,
Aaron Piotrowski