Введение
Эта проблема редко возникает на сайтах. Но тут разбираясь во внутреностях WP, я увидела одно прекрасное средство, загрузки и обновления всей системы- это импорт плагинов в виде запакованого файла в формате ZIP. В принципе от этого можно и обойтись, и, используя загрузку через FTP, с последующей распаковкой средствами удаленного сервера, но как то стало просто интересно посмотреть, можно ли организовать подобный сервис в режиме он-лайн, обычными средствами HTTP, так как ручной механизм загрузки и последующей распаковки годится только для IT-специалистов, и совсем не подходит для обычных юзверей, которые постоянно хотят приобщиться к тайнам интернета
Заглянув в «святые-святых» WP, и по-капавшись в его внутренностях, я нашла тот основной файл, с помощью которого и происходит реаллизация этого великолепного сервиса, как загрузка модуля плагина средствами установки запакованного файла, с последующей ее распоковкой на стороне удаленной машины, в конкретную дирректорию, с определенными, для этого случая начальными или подготовительными сервисами и окончательными или завершающими операциями.
Это файл оформлен в виде класса и весит — 237 кило!!! Понятно, что распаковка zip-а не простое дело, но я все же усомнилась в таком не-производительном объеме файла. Первое что насторожило меня — это то что все было обернуто в «классовые» рамки
Вообще применение классов в PHP у меня вызывает некое отторжение, ибо классы не для интерпритаторов, а для компилирующих программ и систем. Интерпритаторы сами по себе — классы и имеют внутри себя великолепную организацию, при трансляции своими особенными методами трансляции с языка в коды. Но этому я посвящу отдельную статью. Понятно почему получился такой объем, ибо в класс вогнали все возможно-необходимые функции при работе с файлами формата ZIP. Для компилятора — это есть хорошо, но интерпритатор, а тем более нам нужна толька одна возможность — только распоковка. Получается, что все остальное просто создано для будущих расширений, и причем опять не всегда совместных, когда одновременно нужно и распаковывать и запаковывать и еще просматривать один файл.
Читатель возможно спросит
— А разве нет ли штатных средств, для работы с ZIP форматами в Инете.
На что я отвечу, что
— Есть — но добавлю — Для того чтоб ими воспользоваться, то необходимо просить хостеров включить подобные средства в стандартный поставляемый PHP, что не всегда возможно, а зачастую просто — просить не кого, ибо мы часитенько работаем на всяких бесплатных рессурсах, где вообще ни чего для юзверей не делают — на халяву.
Вот и я решила разобраться
— как можно обычными средствами PHP просто распаковать ZIP файл,
и его содержимое разместить в нужном мне месте.
Начнем с того — каким способом это делается в WP, а потом, рассмотрев форматы ZIP, привести необходимые скрипты для решения нашей задачи.