Ðàáîòà ñ ôàéëàìè
Àâòîð: | Àðòåìüåâ Ñåðãåé Èãîðåâè÷ |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
PHP, êàê è áîëüøèíñòâî ÿçûêîâ ïðîãðàììèðîâàíèÿ, èìååò ôóíêöèè äëÿ ðàáîòû ñ ôàéëàìè. Ýòè ôóíêöèè ìîæíî óñëîâíî ðàçäåëèòü íà 2 ãðóïïû. Â ïåðâóþ ïîïàäàþò ôóíêöèè óïðàâëåíèÿ ôàéëàìè è êàòàëîãàìè (êîïèðîâàíèå, ïåðåìåùåíèå, ñîçäàíèå è ò.ä.). Êî âòîðîé ãðóïïå îòíîñÿòñÿ ôóíêöèè äëÿ ðàáîòû ñ ñîäåðæèìûì ôàéëîâ.
Îäíàêî ïðåæäå ÷åì ðàññìàòðèâàòü êîíêðåòíûå ôóíêöèè, íåîáõîäèìî ðàññìîòðåòü íåêîòîðûå òèïû è îñîáåííîñòè ñåðâåðíûõ ôàéëîâûõ ñèñòåì. Òèïîâ âñåãî äâà: Windows è Unix. Ê Unix-òèïó îòíîñÿòñÿ ôàéëîâûå ñèñòåìû âñåõ Unix-ïîäîáíûõ ÎÑ (Linux, FreeBSD, Ubuntu è ïðî÷èå), õîòÿ êàæäàÿ è îáëàäàåò ñâîèìè äîïîëíèòåëüíûìè îñîáåííîñòÿìè.
Îäíàêî áîëüøèíñòâî îáû÷íûõ ïîëüçîâàòåëåé ðàáîòàþò ïîä óïðàâëåíèåì ÎÑ Windows, ïîýòîìó ìû ðàññìîòðèì òîëüêî îñíîâíûå âíåøíèå îòëè÷èÿ ôàéëîâîé ñèñòåìû Unix, íå âäàâàÿñü ãëóáîêî â äåáðè.
Ïåðâîå, ÷òî áðîñàåòñÿ â ãëàçà - íåò ïðèâû÷íûõ áóêâ äèñêîâ, à âñå ïóòè íà÷èíàþòñÿ ñî ñëåøà "\".
Ïóòü â Windows: C:\home\users\root Ïóòü â Unix: /etc/home/users/root
Âòîðîå - â ïóòÿõ èñïîëüçóþòñÿ òîëüêî ïðÿìûå ñëåøè "/", òàêèå æå, êàê â URL-àäðåñàõ. Ïîìíèòå, ÷òî ïðèâû÷íûé Windows-ðàçäåëèòåëü ïóòè "\" (îáðàòíûé ñëåø) èñïîëüçóåòñÿ â PHP äëÿ "ýêðàíèðîâàíèÿ" ñïåöñèìâîëîâ â ñòðîêàõ. Ïîýòîìó, åñëè âàì íóæíî âñòàâèòü îáðàòíûé ñëåø â ñòðîêó, - åãî íàäî óäâîèòü èëè çàêëþ÷èòü â îäèíàðíûå êàâû÷êè, èíà÷å èíòåðïðåòàòîð âûäàñò îøèáêó.
<?php $path = 'C:\home\users\root'; èëè $path = "C:\\home\\users\\root"; ?>
Òðåòüÿ ñóùåñòâåííàÿ îñîáåííîñòü - èìåíà ôàéëîâ â Unix ÷óâñòâèòåëüíû ê ðåãèñòðó. Ýòî îçíà÷àåò, ÷òî â îäíîì êàòàëîãå ìîæíî ñîçäàòü íåñêîëüêî ôàéëîâ, èìåíà êîòîðûõ áóäóò îòëè÷àòüñÿ òîëüêî ðåãèñòðîì ñèìâîëîâ. Íàïðèìåð, èìåíà "readme.txt", "Readme.TXT" è "README.txt" - ýòî ÐÀÇÍÛÅ ôàéëû â Unix, íî îäèí è òîò æå - â Windows. Îá ýòîé îñîáåííîñòè íàäî âñåãäà ïîìíèòü. Åñòü ïðîñòîå ïðàâèëî äëÿ íà÷èíàþùèõ, ïîçâîëÿþùåå èçáåæàòü îøèáîê, ñâÿçàííûõ ñ èìåíàìè ôàéëîâ: âñåãäà èìåíóéò¸ ôàéëû â íèæíåì ðåãèñòðå, à äëÿ ðàçäåëåíèÿ ëîãè÷åñêèõ ÷àñòåé èñïîëüçóéòå òî÷êè, ïîä÷¸ðêèâàíèÿ èëè òèðå. Íàïðèìåð:
my.test.page.php template_file.php
 ïðèíöèïå, ìîæíî èñïîëüçîâàòü ýòó îñîáåííîñòü èì¸í ôàéëîâ â ïðàêòè÷åñêîé ðàáîòå (íàïðìåð, õðàíèòü âåðñèè îäíîãî ôàéëà, ïðîñòî ìåíÿÿ ðåãèñòðû áóêâ). Íî ëó÷øå èçáåãàòü òàêèõ òðþêîâ, ò.ê. îíè áóäóò ðàáîòàòü íå íà âñåõ Unix-ñèñòåìàõ, è ñîâñåì îòêàæóò ïðè ïåðåõîäå íà Windows-õîñòèíã.
Êàê â Windows, òàê è â Unix ïóòè ìîæíî óêàçûâàòü â ïîëíîì è îòíîñèòåëüíîì âèäå.  îòíîñèòåëüíîì âèäå ïóòü ìîæåò ñîäåðæàòü ñïåöèàëüíûå óïðàâëÿþùèå ñèìâîëû "." (òî÷êà) è ".." (äâå òî÷êè). Òî÷êà îáîçíà÷àåò òåêóùèé êàòàëîã, à äâå òî÷êè - ïðåäûäóùèé âûøåëåæàùèé.
Íàïðèìåð, åñëè ó íàñ íà ñåðâåðå åñòü òàêàÿ ñòðóêòóðà êàòàëîãîâ
/public /classes myclass.php /scripts myscript.php index.php utils.php
òî îáðàùåíèÿ ê ôàéëàì áóäóò âûãëàäåòü ñëåäóþùèì îáðàçîì (íà ïðèìåðå include()):
<?php //Ïîäêëþ÷èòü myclass.php èç index.php include('./classes/myclass.php'); //Ïîäêëþ÷èòü myclass.php èç myscript.php include('./../classes/myclass.php'); //Ïîäêëþ÷èòü utils.php èç myscript.php include('./../utils.php'); ?>
Ïðåôèêñ "." â ïóòè ìîæíî íå óêàçûâàòü. Ñëåäóåò ïîìíèòü, ÷òî îòíîñèòåëüíûé ïóòü âñåãäà âû÷èñëÿåòñÿ íà÷èíàÿ îò ôàéëà, ñ êîòîðîãî íà÷àëîñü èñïîëíåíèå, à íå îò òåêóùåãî èñïîëíÿåìîãî. Ïîÿñíþ íà âûøåðàññìîòðåííîì ïðèìåðå. Åñëè ïîëüçîâàòåëü çàãðóçèë index.php, â êîòîðîì ïîäêëþ÷åí ôàéë /scripts/myscript.php, òî âñå îòíîñèòåëüíûå ïóòè áóäóò âû÷èñëÿòüñÿ îòíîñèòåëüíî index.php, íåçàâèñèìî îò òîãî, êîä êàêîãî ôàéëà ñåé÷àñ èñïîëíÿåòñÿ (index.php èëè myscripts.php).
 PHP ðåêîìåíäóåòñÿ óêàçûâàòü îòíîñèòåëüíûå ïóòè âåçäå, ãäå ýòî âîçìîæíî. Ýòî çíà÷èòåëüíî óïðîùàåò ðàáîòó ñ êîäîì è äåëàåò êîä ïåðåíîñèìûì. Åñëè âñå ïóòè â ïðîåêòå îòíîñèòåëüíûå, òî äëÿ ïåðåíîñà ïðîåêòà íà äðóãîé ñåðâåð äîñòàòî÷íî ïðîñòî ñêîïèðîâàòü âñå êàòàëîãè ïî íàçíà÷åíèþ è âñ¸ áóäåò ðàáîòàòü.
Òåïåðü ïðèñòóïèì ê èçó÷åíèþ ôóíêöèé è ïðè¸ìîâ ðàáîòû ñ ôàéëàìè.