Manual:Writing maintenance scripts/ru

Это пошаговое руководство по написанию скрипта обслуживания на основе класса  (см. ), который был введен в MediaWiki 1.16 для упрощения написания скриптов обслуживания MediaWiki в командной строке.

Шаблонный код
Мы рассмотрим скрипт обслуживания, который просто печатает "Hello, World". Эта программа содержит минимально необходимое количество кода (см. также copyright headers).

В приведенном ниже примере программы будет выведено значение "Hello, World!":

$ php helloWorld.php Hello, World! 

Код MediaWiki


Расширение MediaWiki


Пояснения к шаблонам кода
Мы включаем. Это определяет, который обеспечивает основу для всех скриптов обслуживания, включая средства для разбора аргументов командной строки, чтения ввода консоли, подключения к базе данных и т.д.

Мы объявляем наш подкласс Maintenance.

Указывает классу Maintenance запустить скрипт, использующий наш класс, только если он выполняется из командной строки.

Внутри,  загружает другой файл, который автозагружает классы и конфигурацию MediaWiki, а затем

Метод  является точкой входа для скриптов обслуживания, и именно здесь будет находиться основная логика вашего скрипта. Избегайте запуска любого кода из конструктора.

Когда наша программа будет запущена из командной строки, фреймворк обслуживания ядра позаботится об инициализации ядра MediaWiki, конфигурации и т.д., а затем вызовет этот метод.



Команда помощи
Одной из встроенных функций, которой обладают все скрипты обслуживания, является опция. Приведенный выше пример шаблона приведет к следующей странице помощи:

$ php helloWorld.php --help

Usage: php helloWorld.php […]

Generic maintenance parameters: --help (-h): Display this help message --quiet (-q): Whether to suppress non-error output --conf: Location of LocalSettings.php, if not default --wiki: For specifying the wiki ID   --server: The protocol and server name to use in URL --profiler: Profiler output format (usually "text") …



Добавление описания
"Но для чего нужен этот скрипт обслуживания?" Я слышу ваш вопрос.

Мы можем поместить описание в верхней части вывода " ", используя метод  в нашем конструкторе:

Теперь на выходе мы получаем описание:

$ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php [--help] …



Разбор опций и аргументов
Приветствовать весь мир - это хорошо, но мы хотим иметь возможность приветствовать и отдельных людей.

Чтобы добавить опцию командной строки, добавьте конструктор к, который вызывает    , и обновите метод  , чтобы использовать новую опцию. Параметры  равны , так что:

На этот раз при выполнении вывод скрипта  изменяется в зависимости от предоставленного аргумента:

 $ php helloWorld.php Hello, World! $ php helloWorld.php --name=Mark Hello, Mark! $ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php […] … Script specific parameters: --name: Who to say Hello to

Расширения
Если ваш скрипт обслуживания предназначен для расширения, то вы должны добавить требование, чтобы расширение было установлено:

Это позволяет получить полезное сообщение об ошибке, когда расширение не включено. Например, во время локальной разработки определенное расширение может быть еще не включено в LocalSettings.php, или при работе вики-фермы расширение может быть включено на подмножестве вики-сайтов.

Помните, что никакой код не может быть выполнен иначе, чем через метод. Попытки вызвать службы, классы или функции ядра MediaWiki или вызвать ваш собственный код расширения до этого, вызовут ошибки или будут ненадежными и неподдерживаемыми (например, за пределами объявленного класса или в конструкторе).



Написание тестов
Рекомендуется писать тесты для скриптов обслуживания, как и для любого другого класса. Помощь и примеры см. в руководстве по скриптам обслуживания.