[wp-trac] [WordPress Trac] #57686: Introduce wp_trigger_error() to compliment _doing_it_wrong()

WordPress Trac noreply at wordpress.org
Wed Sep 6 22:06:41 UTC 2023


#57686: Introduce wp_trigger_error() to compliment _doing_it_wrong()
-------------------------------------------------+-------------------------
 Reporter:  azaozz                               |       Owner:
                                                 |  hellofromTonya
     Type:  enhancement                          |      Status:  assigned
 Priority:  normal                               |   Milestone:  6.4
Component:  General                              |     Version:
 Severity:  normal                               |  Resolution:
 Keywords:  needs-dev-note has-patch has-unit-   |     Focuses:
  tests commit                                   |
-------------------------------------------------+-------------------------

Comment (by hellofromTonya):

 In [changeset:"56530" 56530]:
 {{{
 #!CommitTicketReference repository="" revision="56530"
 General: Introduce wp_trigger_error().

 Introduces `wp_trigger_error()` as a wrapper around PHP's native
 `trigger_error()`. As a wrapper, it's lean and not opinionated about the
 message. It accepts an E_USER family error level, meaning it is not
 limited to only notices.

 Where `_doing_it_wrong()` intends to loudly alert developers "Hey you're
 doing it wrong - fix it", `wp_trigger_error()` is not opinionated and does
 not add wording. Rather, it passes the given message to `trigger_error()`.

 `wp_trigger_error()` is meant for every `trigger_error()` instance. It can
 be used:
 * in `_doing_it_wrong()` and each `_deprecated_*()` function.
 * for PHP 8.x deprecations.
 * for PHP error parity.
 * for less severe "doing it wrong" instance that do not require bailing
 out.
 * when a component or extension is not available on the server
 * for instances where it's not clear if a plugin's or theme's code is the
 root cause.
 * and more.

 Technical details:

 * Does not trigger the error if `WP_DEBUG` is not `true`.

 * Includes `wp_trigger_error_run` action to allow hooking in for
 backtracing and deeper debug.

 * Accepts an E_USER error level, but defaults to `E_USER_NOTICE`.

 * Requires a function name, though can be an empty string. As the output
 message generated by `trigger_error()` references the file and line number
 where it was invoked, passing the function's name provides more
 information where the error/warning/notice/deprecation happened. It's
 intended to help with debug.

 * A WordPress version number is not included.

 * As messages can appear in the browser, the message is escaped using
 `esc_html()`. As noted in [https://www.php.net/manual/en/function.trigger-
 error.php the PHP manual]: "HTML entities in message are not escaped. Use
 htmlentities() on the message if the error is to be displayed in a
 browser."

 References:
 * [https://www.php.net/manual/en/function.trigger-error.php PHP manual for
 `trigger_error()`].
 * [https://www.php.net/manual/en/errorfunc.constants.php E_USER constants
 (error level) in the PHP manual].

 Props azaozz, hellofromTonya, flixos90, costdev, peterwilsoncc, oglekler,
 mukesh27.
 See #57686.
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/57686#comment:27>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list