Каков альтернативный метод частной функции _doing_it_wrong () WordPress

Я заметил плагины, использующие одноэлементный шаблон, который будет использовать _doing_it_wrong() WordPress в своих методах clone() , например:

 <?php public function __clone() { _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'divlibrary' ), $this->version ); } ?> 

Но я также заметил это предупреждение / уведомление о официальной документации WordPress: введите описание изображения здесь

Это действительно не имеет значения, когда, как разработчик использует его, WordPress выступает за то, что его не следует использовать, поэтому мне интересно, как правильно это сделать в пользовательских плагинах? Этот метод используется для устаревания кода, но в этом случае разработчик просто хочет отправить предупреждение / оповещение.

Ссылка: https://developer.wordpress.org/reference/functions/_doing_it_wrong/

Solutions Collecting From Web of "Каков альтернативный метод частной функции _doing_it_wrong () WordPress"

Каков альтернативный метод частной функции _doing_it_wrong () WordPress ()?

WordPress никогда не _doing_it_wrong() избавиться от функции _doing_it_wrong() , поэтому совершенно безопасно использовать ее. Но если по какой-то причине вы не хотите использовать его, поскольку он помечен как private, тогда вы можете создать плагин с функцией doing_it_wrong() который копируется и вставлен из _doing_it_wrong() .

Другим способом было бы не копировать код и вместо этого использовать класс, который обрабатывает устаревший код. Вот пример кода, который в основном делает то же самое, что _doing_it_wrong() .

 class deprecated { protected $method; protected $message; protected $version; public function method( $method ) { $this->method = $method; return $this; } public function message( $message ) { $this->message = $message; return $this; } public function version( $version ) { $this->version = sprintf( __( 'This message was added in version %1$s.' ), $version ); return $this; } public function trigger_error() { do_action( 'doing_it_wrong_run', $this->method, $this->message, $this->version ); if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true ) ) { trigger_error( sprintf( __( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s' ), isset( $this->method ) ? $this->method : '', isset( $this->message ) ? $this->message : '', isset( $this->version ) ? $this->version : '' ) ); } } } 

Применение

 class wpse_238672 { public function some_deprecated_method() { ( new deprecated() ) ->method( __METHOD__ ) ->message( __( 'Deprecated Method: Use non_deprecated_method() instead.', 'wpse-238672' ) ) ->version( '2.3.4' ) ->trigger_error(); $this->non_deprecated_method(); } public function non_deprecated_method() { } }