КампутарыТыпы файлаў

PHP: чытанне PHP-файла. Праца з файламі ў PHP: чытанне, запіс і рэкамендацыі

PHP з'явіўся значна пазней, чым мовы праграмавання ўмацавалі свае пазіцыі, сфармулявалі агульныя ўяўленні пра сінтаксіс, логіцы, зменных і іншых аб'ектах праграм. Файлы і функцыі працы з імі не мелі прагрэсу, і нават праблема кадоўкі файлаў, якая ўзнікла па натуральных прычынах, не прывяла да кардынальна новым рашэнням.

агульныя заўвагі

Асноўная праца з файламі, якія б яны ні былі, складаецца ў адкрыцці, чытанні / запісы і закрыццё. Можна выкарыстоўваць функцыі блакавання / разблакоўкі доступу да файла на час яго апрацоўкі, можна ўсталёўваць пазіцыю чытання / запісы ў файле - усё, як і раней, у далёкім мінулым.

Важным момантам у PHP з'яўляецца лішак функцый працы з файламі і варыянтаў іх выкарыстання. На практыцы досыць ўжываць простыя, але якія працуюць варыянты. Файл - гэта, перш за ўсё, памяць праграмы. У ім можна захоўваць інфармацыю. Мэта любой праграмы, прызначэнне любога сайта - прадстаўляць, апрацоўваць і забяспечваць захаванасць інфармацыі.

істотная акалічнасць

Раней было непарушным патрабаванне сумяшчальнасці як мінімум знізу ўверх. Гэта значыць аднойчы напісаная праграма на адной версіі мовы праграмавання ідэальна кампілюецца / інтэрпрэтуецца на наступнай версіі. У сучасным праграмаванні гэта не так. Патрабаванне сумяшчальнасці сінтаксічных канструкцый мовы сышло ў гісторыю, а барацьба паміж стылямі і сродкамі праграмавання і версіямі тых ці іншых інструментаў стала нормай іх жыцці.

Праца з файламі, як і з базамі дадзеных, важная настолькі, наколькі важны інтэрфейс сайта. Першае павінна быць пабудавана такім чынам, каб пры змене платформы, хостынгу, версіі мовы не трэба было мяняць код сайта. Інтэрфейс працы з файламі павінен быць вынесены ў асобны скрыпт і забяспечваць поўную сумяшчальнасць, гэтак жа як і дызайн сайта павінен адэкватна адаптавацца да любога прылады, браўзэру і прадастаўляць астатняй функцыянальнасці сайта аднолькавыя магчымасці.

Прачытаць і змяніць самога сябе

Ці можа праграма сябе змяніць, то ёсць ці можа скрыпт ўдасканальвацца? Па гэты дзень гэтае пытанне цікавіць шматлікіх. Але значна больш практычным гучыць задача: PHP чытанне PHP файла. Не заўсёды распрацоўшчык можа вырашыць тую ці іншую задачу, напісаўшы канкрэтны код. Часам неабходна змяніць яго, калі на сайт зайшоў наведвальнік і сфармуляваў ня прадугледжаны на этапе распрацоўкі пытанне.

Як і ва ўсіх астатніх выпадках, перш за ўсё файл трэба адкрыць. Пры гэтым не важна, існуе гэты файл ці не. Калі вядома, што файл існуе (функцыя file_exists () дае станоўчы адказ), выкарыстоўваецца функцыя fopen () з доступам 'r', 'r +', 'a', 'a +'. Калі файла яшчэ няма, то з доступам 'a', 'a +', 'w', 'w +'. Вынікам адкрыцця файла будзе яго дэскрыптар. Зачыняецца файл функцыяй fclose ().

Зручна выкарыстоўваць PHP чытанне файла ў масіў, калі няма неабходнасці яго апрацоўваць ў момант чытання.

if (file_exists ($ fName)) {

$ ALines = file ($ fName)

}

У такім варыянце кожны радок файла трапляе ў элемент масіва паслядоўна. Варта заўважыць, што функцыі file () або file_get_contents () не маюць патрэбу ў адкрыцці файла і яго закрыццё.

Калі ўваходны файл занадта вялікі, а трэба знайсці зусім ледзь-ледзь інфармацыі, або па іншых меркаваннях, можна выкарыстоўваць PHP чытанне файла парадкова. PHP дае магчымасць рабіць гэта функцыямі fgets () і fgetc ().

$ CLines = ''

$ Fvs = fopen ($ fName, 'r')

$ I = 0

while ((false! == ($ 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)

$ CLine = '2 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 патрабуе гэта на этапе распрацоўкі, але ў некаторых выпадках у інтарэсах бяспекі або надзейнасці сайта праверка запісу дадзеных мае істотнае значэнне.

Характэрная рыса PHP, MySQl, JavaScript, а асабліва браўзэраў: ціха пускаць на самацёк некаторыя памылкі. «Не распазнаюцца, не зрабілася ...» - не занадта добрая практыка пярэдняга краю інфармацыйных тэхналогій, але гэта вучыць распрацоўшчыкаў не памыляцца і пісаць чысты, якасны код, што таксама нядрэнна.

PHP і праца з рэальнымі дакументамі

PHP чытанне PHP файла, безумоўна, ўяўляе практычны цікавасць, але гэта сфера праграмавання. Карыстальніка і наведвальніка сайтаў цікавіць інфармацыя прыкладнога характару, якую ён прывык бачыць у выглядзе табліц і дакументаў, у прыватнасці, у фарматах * .xlsx і * .docx файлаў. Гэта файлы ў фармаце MS Excel і MS Word.

Спісы тавараў, цэны, характарыстыкі агульнапрынята фармаваць у выглядзе табліц, таму PHP чытанне Excel файла мае істотнае значэнне.

Для работ з такімі файламі распрацаваны бібліятэкі PHPExcel і PHPWord. Аднак змесціва файлаў * .xlsx і * .docx прадстаўлена ў стандарце OOXML, то ёсць рэальны даступны разуменню дакумент прадстаўлены zip архівам. Zip архіў - гэта мноства файлаў, уключаючы карцінкі, аб'екты, формулы, устаўкі з іншых праграм. Тэкставыя файлы тут прадстаўлены апісаннямі ў выглядзе тэгаў. Прачытаць такі файл мала, трэба яго разабраць, каб атрымаць змесціва і структуру для выкарыстання і змены.

Гэта азначае, што аперацыя чытання ператвараецца ў працэдуру адкрыцця архіва. Названыя бібліятэкі адкрываюць архіў дакумента самастойна і падаюць распрацоўніку шырокія функцыі для чытання, апрацоўкі і запісы такіх дакументаў.

Excel-табліцы

Для таго каб прачытаць Excel-табліцу, дастаткова ведаць імя яе файла і шлях да яго ($ xls). У выніку выканання наступнага кода будзе сфарміраваны масіў значэнняў зыходнай 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

Усяго два радкі:

$ 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 Excel і PHP Word, дазваляюць маніпуляваць рэальнымі дакументамі, рабіць іх змесціва актуальным у кожны момант часу. У сучасным дынамічным свеце гэта становіцца вельмі важным. Цэнтр цяжару ўжо даўно перайшоў з лакальнага выкарыстання кампутарнай тэхнікі ў віртуальнае інтэрнэт-прастору. Таму стварэнне табліц і дакументаў у лакальных прадуктах ад Microsoft меней эфектыўна, чым праца з такімі дакументамі ў аўтаматычным і паўаўтаматычным рэжыме на сайце, які даступны не толькі стваральніку табліцы або дакумента, але і яго спажыўцам.

Тэкставыя файлы, іншае жыццё

У першым набліжэнні тэкставыя файлы прасцей, чым PHP файлы або прыкладныя дакументы. Аднак тут ёсць над чым падумаць. Аперацыі чытання / запісы такіх файлаў ўжо пазначаныя вышэй, але значна большае значэнне мае сэнс такіх файлаў.

Калі ёсць такая дадзенасць, як кліент і сервер (на першым пануе JavaScript, на другім - PHP), то нават механізмы cookie і sessions не спраўляюцца з неабходнасцю перадачы інфармацыі паміж скрыптамі, старонкамі, тымі ці іншымі працэсамі.

Можна адлюстроўваць патрэбныя змены ў базе дадзеных, але пры ўсіх іх вартасцях і хуткасці невялікія часовыя або пастаянныя тэкставыя файлы могуць апынуцца значна больш цікавым варыянтам перадачы інфармацыі. Калі не ствараць мноства дробных файлаў і кантраляваць іх памеры, то яны могуць прадстаўляць сабой спецыфічны і больш гнуткі варыянт базы дадзеных.

PHP чытанне тэкставага файла адбываецца хутка, яго адразу можна разабраць у структуру, масіў ці аб'ект. Апошняе вельмі важна, бо дазваляе ствараць аб'екты, якія жывуць па-за часам, адведзенага PHP скрыпту, які, як вядома, можа існаваць толькі на серверы і толькі ў момант загрузкі старонкі, фарміравання AJAX адказу або па іншай прычыне, якая выклікае запуск PHP інтэрпрэтатара.

Перспектыўныя ідэі, рэкамендацыі

Калі падумаць над тым, што тэкставы файл - гэта змест і структура ад распрацоўніка, PHP файл - гэта сінтаксіс інтэрпрэтатара плюс логіка распрацоўніка, а «теговые» апісання html, css, xml - гэта больш сэнсавыя элементы, але рэгламентаваныя статычнымі стандартамі. Можна прыйсці да думкі пра тое, што верагодна файлаў ўжо пара набыць новы змест, і яна сама павінна вызначаць іх якасць і логіку прымянення. Менавіта таму, што праграмаванне яшчэ не гатова да наступнага этапу свайго развіцця, файлы цяпер застаюцца проста файламі, якія стварае распрацоўшчык і вызначае іх выкарыстанне.

Самае цікавае і перспектыўнае, калі PHP чытанне PHP файла адбываецца самастойна, калі ў гэтым узнікае неабходнасць. А простае PHP чытанне радкі з файла прыводзіць да стварэння аб'екта, хоць бы ў тым стане, у якім ён быў захаваны. Гэта не зусім звыклыя ідэі, але ж у сучасным свеце ўсё так хутка мяняецца.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.birmiss.com. Theme powered by WordPress.