rspec/rules/S5632/php/rule.adoc

62 lines
1.3 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
Instances of classes that do not derive from the "Throwable" interface cannot be used in a PHP "throw" statement.
2021-02-02 15:02:10 +01:00
Many built-in exceptions such as "Exception" and the SPL exception classes do implement the "Throwable" interface and can be extended when creating custom exceptions.
2021-02-02 15:02:10 +01:00
This rule raises an issue when an instance of a class that does not implement the "Throwable" interface is used in a "throw" statement .
=== Noncompliant code example
2022-02-04 17:28:24 +01:00
[source,php]
----
class NoThrowable {}
throw new NoThrowable(); // Noncompliant
----
=== Compliant solution
2022-02-04 17:28:24 +01:00
[source,php]
----
<?php
class SomeThrowable implements Throwable {
// Implementation of the Throwable methods
}
throw new SomeThrowable(); // Compliant
class SomeCustomException extends Exception {}
throw new SomeCustomException(); // Compliant{code}
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Throw an object derived from "Throwable".
=== Highlighting
* Primary: The whole "throw" statement
* Secondary: The name of the class in its class definition.
** message: 'Class definition.'
'''
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]