| |
orm>
При приеме данных такой формы PHP "запутается" и, хотя и создаст массив $File,
но не поместит в него никаких полезных данных. А именно, в моей версии 4.0.3pl1
в
элемент с ключом a вместо имени файла попадает какое-то комплексное (судя по
его
странному виду) число.) Надеюсь, в будущих версиях интерпретатора это досадное
недоразумение будет исправлено.
Но все же существует метод, с помощью которого мы сможем обработать и такие
"неправильные" с точки зрения PHP формы. Я об этом еще не упоминал, но PHP, по-
мимо установки вышеперечисленных переменных, создает также глобальный массив
с именем $HTTP_POST_FILES. Как показывает практика, в этом массиве содержатся
верные данные, какое бы имя не имело поле закачки в форме.
Массив $HTTP_POST_FILES создается не всегда, а только в том случае, если
в настройках PHP задействован параметр track_vars. Так как, судя по доку-
ментации, в PHP версии 4 он включен всегда (чего нельзя сказать о третьей
версии), то беспокоиться не о чем.
Массив $HTTP_POST_FILES используется довольно редко, так что я предоставляю
читателю возможность самостоятельно разобраться, в каком формате хранятся в нем
данные. Это несложно. Вам не потребуется ничего, кроме функции Dump(), которая
уже упоминалась в этой главе, и, конечно, желания экспериментировать.
Глава 29
Модульность программы.
Написание "библиотекаря"
Во всех серьезных языках программирования имеется возможность писать модуль-
ные программы. Иными словами, при определенных навыках вы можете разбить
свою программу на относительно независимые части, каждую из которых реализо-
вать в виде модуля. Особенно это бывает полезно, если над программой работает
сра-
зу коллектив разработчиков (как чаще всего и бывает) — в этом случае остается
лишь продумать связи между модулями, написание которых можно поручить разным
программистам.
Модули обычно также используют другие модули в своей работе, те — третьи, и т.
д.,
до самого низкого уровня. Хорошо написанный модуль подобен новому автомобилю:
его интерфейсные функции — это аналог руля и педаль, а уж что там под капотом —
программиста, подключающего модуль, волновать не должно.
Тем не менее, должен вас огорчить: к сожалению, разработчики PHP не
предусмотре-
ли в языке сколько-нибудь удобной поддержки модульности. Однако не впадайте в
уныние: дело в том, что такую поддержку можно в язык добавить, причем относи-
тельно несложными приемами самого PHP и сравнительно небольшими затратами с
точки зрения быстродействия. Этим мы и займемся в настоящей главе.
Наши требования
Возможно, вы возразите: "Как же нет никакой поддержки модульности?
А инструкция include?" Да, разумеется, уж лучше использовать include, вместо
того чтобы хранить всю программу в одном-единственном файле. Но дело в том, что
применение этой инструкции довольно-таки неудобно по той простой причине, что
поиск подключаемых файлов проводится только в тех каталогах, которые указал ад-
министратор при установке PHP. У многих хостинг-провайдеров мы не можем изме-
нять по своему усмотрению эти каталоги, а указание относительных путей
(например,
../../php/somefile.php) оказывается довольно проблематичным (представьте
только, сколько всего нам придется изменять, если мы захотим расположить нашу
программу в другом месте).
Часть V. Приемы программирования на PHP
398
Возможно, этот разговор о каталогах выглядит с первого взгляда несколько
надуманно, однако люди, уже столкнувшиеся когда-либо с рас
|
|