Одной из функций, которые я использую в своем плагине, является загрязнение глобальной области видимости именем, которое может конфликтовать с другой функцией (используемой в другом плагине). Итак, я думаю, я должен осудить это. Но как мне это сделать?
function foo() {
echo 'bar';
}
Я знаю, _deprecate_function()
но был бы благодарен за пример, показывающий все шаги, которые я должен предпринять, чтобы удалить функцию из ядра моего плагина.
Ссылка: https://developer.wordpress.org/reference/functions/_deprecated_function/
php
functions
deprecation
henrywright
источник
источник
Ответы:
В дополнение к ответу @Welcher:
В ядре есть несколько хороших примеров « кладбища », где « функции умирают ».
Вы можете использовать их в качестве руководства, например, в отношении документации.
Вот один такой пример для
permalink_link()
подwp-includes/deprecated.php
Вот встроенная документация для
_deprecated_function
функции, которая объясняет входные аргументы:источник
_deprecated_function()
3) добавить вызов к моей новой функции, которая заменяет старуюУстаревание не всегда равно удалению, это обычно означает, что элемент помечен для СОБЫТИЯ для удаления из API. Это метод, который будет вызываться извне - как другие плагины или разработчики? Если этот метод только когда-либо используется плагином внутри, вы можете безопасно удалить его и заменить его на более подходящую функцию name.
Если нет, я бы создал функцию с лучшим именем, и одна из них с плохим именем вызывала ее
__doing_it_wrong
вызовом - читайте об этом в кодексе. Это даст другим разработчикам время обновить свои ссылки на метод, и вы можете безопасно удалить метод в более поздняя версия.Надеюсь это поможет!
источник
Вы создаете новый плагин и советуете пользователям переходить на него, поскольку текущий - EOL.
Нет ничего более раздражающего, чем авторы плагинов и тем, которые меняют свои общедоступные API и пытаются воспринимать это как «просто еще одно небольшое обновление». Нет причин ломать сайты из-за проблемы, на которую ваши пользователи фактически не влияют.
источник
Я хотел бы предложить что-то вроде:
Это приводит к отображению предупреждения об устаревании в журналах вместе с трассировкой стека. Естественно, это будет работать, только если в WordPress включена регистрация.
Тернарный оператор существует потому, что константа E_USER_DEPRECATED была введена только в PHP 5.3.0. В старых версиях мы можем вместо этого обратиться к простому предупреждению пользователя.
Из руководства по PHP по константам ошибок :
Причина, по которой я не люблю использовать _doing_it_wrong или __deprecated_function, заключается в том, что эти функции предназначены только для ядра WordPress. Из ссылки на код этих функций:
источник