PHP: чтение PHP-файла. Работа с файлами в PHP: чтение, запись и рекомендации

чтение PHP-файлаPHP появился после того, как языки программирования успели укрепить свои позиции и сформулировать общие представления о логике, синтаксисе, переменных и других объектах программ. Сами файлы и функции работы с ними не имели прогресса. Даже возникшая проблема кодировки файлов, которая появилась по вполне естественным причинам, не привела к радикально новым решениям.

PHP: общие замечания

Какими бы ни были файлы, основная работа с ними заключается в процессах открытия, чтения/записи и закрытия. На время обработки файла можно использовать функции блокировки/разблокировки доступа к файлу. ВPHP важным моментом является избыток функций работы с файлами и вариантов их использования. С точки зрения практики достаточно применять простые, но работающие варианты. Прежде всего, файл является памятью программы. В файле можно хранить информацию. Цель любой программы состоит в представлении, обработке и обеспечении сохранности информации.

Существенное обстоятельство

Требование совместимости снизу вверх раньше было незыблемым. Это означает, что написанная на одной версии языка программирования программа должна идеально компилироваться и интерпретироваться в следующей версии. Но в современном программировании дела обстоят не совсем так. Обязательное требование совместимости синтаксических конструкций языка кануло в лету. Борьба между средствами программирования и версиями тех или иных инструментов уже успела стать нормой современной жизни. Работа с базами данных и файлами важна настолько же, насколько важен интерфейс сайта. Работа с файлами должна быть построена таким образом, чтобы при смене хостинга, платформы или версии языка пользователю не пришлось бы менять код сайта. Сам интерфейс работы с файлами должен быть вынесен в отдельный скрипт и обеспечивать полную совместимость. Дизайн сайта должен легко адаптироваться к любому браузеру и устройству. Кроме того он должен предоставлять остальной функциональности сайта одинаковые возможности.

PHP: чтение и изменение

Может ли программа изменить себя? Может ли скрипт самостоятельно совершенствоваться? Этот вопрос по сей день интересует многих пользователей. Задача PHP чтение PHPфайлов звучит гораздо практичнее. Разработчик не всегда может решить ту или иную задачу путем написания конкретного кода. В некоторых случаях требуется изменения кода в тот момент, когда на сайт зашел посетитель и сформулировал запрос, не предусмотренный на этапе разработки. Прежде всего, файл, как и во всех остальных случаях, необходимо открыть. При этом совершенно не важно, существует ли этот файл или нет. Если файл существует, то функция file_exists () будет выдавать положительный ответ. Тогда можно использовать функцию fopen () с доступом «r», «r+», «a», «a+». Если нужного файла еще нет, то необходимо использовать функцию fopen () с доступом «a»,«a+», «w», «w+». В данном случае результатом открытия файла будет его дескриптор. Для закрытия файла следует использовать функцию fclose (). Когда нет необходимости обработки файла в момент чтения, удобно использовать PHP чтение файла в массив.

If (file__exists ($fName)) {$aLines=file($fName)}

При использовании такого варианта каждая строка файла последовательно попадет в элемент массива. Необходимо отметить, что функции file_get_contents () и file () не нуждаются в открытии и закрытии файла. Если входной файл слишком велик, а найти нужно совсем немного информации, то можно использовать построчное PHP чтение из файла. PHP предоставляет возможность выполнить данную процедуру при помощи функций fgets () иfgetc ().

$cLines = “

$fvs = fopen ($fName, ‘r’)

$i = 0

while ((false i== ($cLine=fgets ($fvs, 2000)))) {

$i++

$cLInes.=’’.$i.’).’$cLine

}

fclose ($fvs)

Оба варианта работают неплохо. Однако при выполнении PHP чтения файла для последующего изменения, необходимо соблюдать определенные меры предосторожности. Не всегда на этапе разработки сайта можно предусмотреть варианты его использования посетителем. Лучше, если изменение скриптов будет осуществляться в пределах функций сайта. Управление изменением скриптов не должно быть доступно посетителю, в том числе и администратору ресурса.

PHP: сохранение результатов

Обновленная информация должна быть записана в файл при помощи функции fputs () построчно или целиком при помощи функции file_put_contents ().

$fName = $_SERVER[‘DOCUMENT_ROOT’].‘/tmp/scData.php’

$fvs=fopen ($fName, ‘a’)

flock ($fvs, LOCK_EX)

$cLine= ‘1 line’. chr(10)

fputs($fvs, $cLine)

fflush($fvs)

flock($fvs, LOCK_UN)

fclose($fvs)

При использовании построчного варианта записи, можно манипулировать данными в процессе записи. Во втором случае массив или записываемая строка целиком помещается в файл.

$file = ‘ scData.php ‘

$cContents = file_get_contents($file)

// добавлениезаписи

$cContents .= «новая запись\n»

// обратнаязаписьфайла

file_put_contents($file, $cContents)

Запись и чтение файлов PHP осуществляется естественно и просто. Стоит иметь в виду, что каждый файл имеет свое имя, путь (папку) и расширение. Чтобы PHP скрипт имел возможность считывать и записывать файлы, скрипт должен иметь соответствующие права. Данные права автоматически выставляются на хостинге, однако в некоторых случаях требуется расширить их. В некоторых случаях желательно проверить результаты путем выполнения тестового чтения. При записи файлов PHP это требуется на этапе разработки. В интересах надежности и безопасности сайта проверка записи данных имеет большое значение. Характерной чертой MySQL, PHP, JavaScript, а в особенности браузеров является пускать некоторые ошибки на самотек.  Для переднего края информационных технологий принцип «не сделалось, не распозналось» является не слишком хорошей практикой. Зато он учит разработчиков программного обеспечения не ошибаться и писать качественный чистый код, что неплохо.

PHP: работа с реальными документами

Безусловно, чтение PHP файла представляет практический интерес, однако это сфера программирования. Посетителя сайтов и пользователя больше интересует информация прикладного характера, которую они привыкли видеть в виде документов и таблиц, в частности в формате *.docxфайлов и форматах *.xlsx.Это файлы в формате MSWord и MSExcel.Так, например, списки цен, товаров, характеристики принято формировать в виде таблиц. Поэтому здесь чтение PHP Excel файла имеет существенное значение.  Специально для работы с такими файлами были разработаны библиотеки PHP Word и PHP Excel.Содержимое пакетов *.docx и *.xlsx представлено в стандарте OOXML. Это реальный документ, доступный для понимания, который представлен в виде zip архива. Zip архив представляет собой множество файлов, в том числе объекты, картинки, формулы и вставки из других программ. Здесь текстовые файлы представлены описаниями в виде тегов. Мало прочитать такой файл, его еще необходимо разобрать, чтобы получить структуру и содержимое для изменения и использования. Это значит, что операция чтения фактически превращается в процедуру открытия архива. Библиотеки самостоятельно открывают архив документа и предоставляют разработчику широкие возможности для записи, чтения и обработки таких документов.

Таблицы в Excel

Для того чтобы выполнить чтение таблицы Excel, достаточно знать имя файла и  путь для доступа к нему.После выполнения представленного ниже кода будет сформирован массив значений исходной таблицы Excel.

include_once ‘PhpOffice/PhpExcel/IOFactory.php’

function scGetExcelFile($xls){

$objPHPExcel = PHPExcel_IOFactory::load($xls)

$objPHPExcel->setActiveSheetIndex(0)

//массивсодержитмассивыстрок

$aSheet = $objPHPExcel->getActiveSheet()

$array = array()

//обработка

foreach($aSheet->getRowIterator() as $row){

$cellIterator = $row->getCellIterator()

$item = array()

foreach($cellIterator as $cell){

array_push($item, iconv(‘utf-8’, ‘cp1251’, $cell->getCalculatedValue()))

}

array_push($array, $item)

}

return $array

}

Обработка и чтение файлов Excel осуществляются значительно сложнее, чем обработка документов Word.При необходимости реализации серьезного проекта для обработки и чтения прикладной информации лучшим вариантом будет освоить библиотеку PHPWord. Это поможет вам получить хороший опыт и быстро войти в специфику вопроса.

Документы Word

Для обработки документа в формате Word необходимо всего две строки

$oWord = new \PhpOffice\PhpWord\PhpWord()

$oDocx = $this->oWord->loadTemplate($cFileName)

Документ $cFileName теперь доступен для обработки. Далее будет открыт архив, из него выбрано и проанализировано содержимое, которое можно отобразить на сайте, записать и изменить обратно.

$zipClass = new ZipArchive()

$zipClass->open($this->tempFileName)

// чтение содержимого документа

for ($i=0; $i<$zipClass->numFiles; $i++) {

$cNameIn = $zipClass->getNameIndex($i)

$cNameInExt = substr($cNameIn, -4)

if (($cNameInExt == ‘.xml’) || ($cNameInExt == ‘rels’)) {

// файлы, имеющие расширения ‘.xml’ и ‘.xml.rels’ сохраняются в таблице документа

// каждая xml-строка записывается с уникальным номером по порядку

$cBodyIn = $zipClass->getFromName($cNameIn)

$cBodyInLen = strlen($cBodyIn)

} else {

// все остальные файлы в таком виде, как есть, записываются в папку документа

$cNameOnly = substr($cNameIn, strrpos($cNameIn, ‘/’) + 1)

$zipClass->getFromName($cNameIn, $cWorkPath);

// содержимоеввидефайла

}

Возможности, которые открывают PHP Word и PHP Excel, дают возможность манипулировать реальными документами и делать их содержимое актуальным в каждый определенный момент времени. Это довольно важно в современном динамично развивающемся мире. Центр тяжести давно перешел от локального применения компьютерной техники к виртуальному интернет-пространству. По этой причине создание таблиц и документов в локальных продуктах от компании Microsoftявляется менее эффективным, чем работа с такими документами на сайте в полуавтоматическом и автоматическом режиме, который доступен не только создателю документа или таблицы, но и потребителям.

Другая жизнь текстовых файлов

Текстовые файлы в первом приближении оказываются значительно проще, чем прикладные документы или PHP файлы. Однако и здесь есть над чем поразмыслить. Об операциях чтения и записи таких файлов уже было сказано выше. Большое значение имеет смысл таких файлов. Поскольку есть такая данность, как клиент и сервер, то даже механизмы sessions и cookie не справляются с необходимостью передачи информации между страницами, скриптами и процессами. Нужные изменения можно отражать в базе данных. Однако при всех их достоинствах и скорости более интересным вариантом передачи информации могут оказаться небольшие временные или постоянные текстовые файлы. Если не создавать большое количество мелких файлов и контролировать их размер, то они могут представлять собой своеобразный более гибкий вариант БД. Чтение текстового файла PHP осуществляется очень быстро. Его сразу же можно разобрать в массив, структуру или объект. Последний пункт имеет особое значение, поскольку он дает возможность создавать объекты, существующие вне времени, отведенного скрипту PHP, который может существовать только в момент загрузки страницы и только на сервере, формирования AJAX ответа или по другой причине, приводящей к запуску интерпретатора PHP.

Рекомендации и идеи

Если поразмыслить над тем, что текстовый файл представляет собой содержание и структуру от разработчика, то файл PHP представляет собой синтаксис интерпретатора плюс логику разработчика, а теги представляют собой смысловые элементы, регламентированные статичными стандартами. Таким образом, можно прийти к мысли, что файлам пора обрести новое содержание. Оно само должно определять логику их применения и качества. Так как программирование еще не готово к следующему этапу своего развития, файлы продолжают оставаться просто файлами, которые разработчик создает и определяет их использование.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *