Надявам се че имате поне основни познания за файловата система и за това няма да давам определение. Ако това не е така, ви препоръчвам първо
да се информирате по-подробно за това какво е операционна система, файлове, директории(или така наречените папки), хостинг, домейн и другите основни
понятия.
Реално хостингът, който ползваме, е една директория(или диск), на който са разположени файлове. Ролята на Apache е да осигурява прочитането на определен
тип файлове. Останалите файлове могат да се изтеглят. С помоща на РНР можем да създаваме, редактираме и изтриваме файлове, до които имаме достъп. Няма
да давам подробни обяснения за това как се работи в детайли с файловата система, тъй като тук важи правилото 80-20, т.е. 80% от задачите се постигат с 20% от
функционалността. Това е така, тъй като данните ще записваме в базата данни, а не във отделни файлове, което облекчава доста работата ни и прави използването на файлове ро-рядко.
Първото нещо, което трябва да направим, за да работим с даден файл е да го отворим, т.е. да получим достъп до съдържанието му. Тук хората, работили с
езика С могат изцяло да пропуснат статията, защото РНР е взаимствал 100% функциите за работа с файлове от него. И така първата функция е :
fopen("път и име на файла", "тип на отварянето");
Тази функция връща връзка към съдържанието на файла(указател). Тип на отварянето е индикация дали добавяме, четем или пишем във файла. Съответно
това се обозначава с буквите: r - четене, w - писане, a - добавяне. Ако след буквата добавите и знака +, то файлът ще се отвори и за четене и за писане. Има
също така някой важни неща, които трябва да запомните. Ако дадете име на файл и го обявите за четене, като файлът не съществува, ще се върне грешка. Ако
обаче го обявите за писане или за добавяне, ще се създаде нов файл с това име. Ако файлът съществува и го отворите с w, съдържанието му ще бъде изтрито.
Ето как ще си създадем файл info.txt с помоща на РНР:
$fp = fopen("info.txt", w);
Преди да ви запозная с писането и четенето във файл, първо трябва да кажа, че щом отворите файл, задължително трябва и да го затворите. Ето как:
fclose($fp);
Когато за пръв път се сблъсках с работата с файлове, най-много ме озадачи това как при отваряне на файла се определя къде пишем и какво пишем в него.
Представете си че имате невидим курсор в файла. Когато го отворите за четене е логично той да е в началото на файла, за да вървим напред, а когато пишем
или добавяме, е най-логично да е в края на файла. Нека първо видим как да запишем нещо във файла:
fwrite("указател към файла", "информация за запис");
Тук "указател към файла" всъщност е това, което ни връща fopen и което е този невидим курсор, за който споменах по-горе. Тоест ако искаме да запишем нещо
във нашия нов файл info.txt ще го направим така:
fwrite($fp, "Hello");
Това, разбира се, ще бъде записано в края на файла. Ako искате да прочетете от файл:
fread("указател към файла", дължина на прочетането);
Тук дължината е брой символи, като се броят всички символи - иинтервалите и новите редове. Четенето ще започне от позицията, на която се намира указателят в момента. Ако искате да прочетете всичко ползвайте:
filesize($file);
Тази функция връща, както подсказва името й, броя символи във $file. Последната функция, която ще обясня е:
fseek("указател към файла", "позиция на която да се поиционира");
С тази функция може да позиционирате указателя на зададената позиция. За пример позиция нула ще даде начало на файла. Не би трябвало да имате особени
проблеми със файловата система, тъй като тя се съставя най-вече от казаните до момента функции - отваряте файл, четете или пишете в него и го затвяряте. За
улеснение ще дам списък с някой други полезни функции, които имат повече от ясен синтаксис. Разбира се тук давам основата, върху която ще надградим още познания, но за начало е добре да се запознаете само нея.
copy($orig_filename, $new_filename) - копира файла $orig_filename във файла $new_filename, като създава $new_filename, ако не съществува
rename($orig_filename, $new_filename) - преименова $orig_filename на $new_filename
unlink($filename) - изтрива файла $filename
fgets($file, $pos) - връща стринг, започващ от позиция $pos и завършващ с нов ред във файла $file
fgetc($file, $pos) - връща символ, стоящ на позиция $pos във файла $file
ftell($file) - връща позицията на указателя на файла $file
file_exists($file) - връща истина ако $file съществува и лъжа в противния случай
is_file($file) - връща истина ако $file съществува и е файл и лъжа в противния случай
Ако имате нужда от уеб сайт - изборът е лесен - rVertis - уеб дизайн