Programmēšana

Failu sistēmas pārvaldība ar PHP

Es jau iepriekš rakstīju emuārus par PHP izmantošanu komandrindā, taču es neaptvēru PHP izmantošanu, lai piekļūtu šī ieraksta failu sistēmai emuāra ziņas lieluma interesēs. Es izmantoju šo ziņu, lai aptvertu dažus PHP failu sistēmas pārvaldības pamatus.

Daudzi no mums, kas raksta un izmanto skriptus, to dara funkcijām, kas saistītas ar failu sistēmu. Mēs skriptu darbības, kuras mēs parasti veicam failu sistēmā. Konkrēti, mums bieži rodas nepieciešamība kopēt failus, pārdēvēt failus, noņemt failus un atvērt un aizvērt failus. Mums bieži jāveic noteikta loģika, pamatojoties uz noteiktām failu un direktoriju īpašībām. Būtu grūti nopietni uzskatīt valodu par skriptu valodu bez pienācīga failu sistēmas atbalsta. Par laimi, PHP ir iebūvēts atbalsts failu sistēmas pārvaldībai. Šo atbalstu var izmantot kopā ar komandrindas PHP.

W3Schools.com ir pārbaudīts vērtīgs resurss, lai uzzinātu par tīmekļa tehnoloģijām, un to piemērs ir PHP failu sistēmas funkciju aptvērums. Šī lapa mums atgādina, ka PHP failu sistēmas funkcijas "ir daļa no PHP kodola" un "ļauj piekļūt un manipulēt ar failu sistēmu". Vēl svarīgāk ir tas, ka šajā lapā ir apkopota arī PHP failu sistēmas konfigurācijas informācija, PHP failu sistēmas funkcijas un PHP failu sistēmas konstantes. Noklikšķinot uz funkcijas nosaukuma, tiek atvērta lapa ar sīkāku informāciju par šo funkciju, kā arī PHP koda piemērs, izmantojot šo funkciju. Tā kā šajā ziņojumā es apskatīšu tikai to apakškopu, es vēlējos pārliecināties, ka savlaicīgi atsaucos uz šo W3Schools lapu.

Šis skripts, demoPhpFileSystemManagement.php, parāda vairākas PHP funkcijas faila informācijas noteikšanai. Es šeit uzskaita visu skriptu un pēc tam vēlreiz reproducēju skripta daļas, kad es tās apspriež.

demoPhpFileSystemManagement.php

#! / usr / bin / php 

Pirms sāku detalizētāk aprakstīt iepriekš minētajā piemērā izmantotās PHP failu sistēmas funkcijas, šajā PHP kodā esmu novērojis savu Java fonu. Piemēram, koda funkcijām es izmantoju Javadoc stila komentārus. Par laimi, ģenerējot koda dokumentāciju, PHPDocumentor ievēro Džavadoka stila komentārus. Iepriekš minētais kods parāda arī to nosaukumkonvenciju atšķirību, kuras esmu pieradis Java (kamieļu gadījumā), un PHP nosaukumu piešķiršanas konvencijas (visi mazie burti ar vārdiem, kas atdalīti ar pasvītrām), kā parādīts izmantotajās PHP funkcijās.

PHP skripta pirmā daļa nodrošina vienkāršu teksta komandrindas izvēlni, kas liek lietotājam ievadīt izvēles, failu nosaukumus un ceļus. Šis koda fragments pats neko nedara ar PHP failu sistēmas funkcijām, taču tas parāda PHP standarta ievades un izvades un PHP slēdža paziņojumu. Šī pirmā daļa ir šeit atveidota.

Komandrindas izvēlne un ievades apstrāde

veiciet {echo "\ nKuru PHP failu sistēmas darbību vēlaties palaist? \ n \ n"; atbalss "1. Parsēt faila ceļa informāciju \ n"; atbalss "2. Iegūstiet absolūtu ceļu \ n"; atbalss "3. Iegūt faila izmēru \ n"; atbalss "4. Iegūstiet diska izmēru un brīvu vietu \ n"; atbalss "5. Iegūt failu laikus \ n"; echo "\ nIevadiet 0, lai izietu \ n"; atbalss "\ n \ nJūsu izvēle:"; $ atlase = apdare (fgets (STDIN)); } while (! (($ selection == "0") || ($ selection == "1") || ($ selection == "2") || ($ selection == "3") || ( $ selection == "4") || ($ selection == "5"))); slēdzis ($ selection) {gadījums "1": echo "Ievadiet faila ceļu:"; $ filePath = apgriezt (fgets (STDIN)); $ filePathInfo = parseFilePath ($ filePath); echo $ filePathInfo; pārtraukums; gadījums "2": atbalss "Ievadiet ceļu:"; $ filePath = apgriezt (fgets (STDIN)); $ realPath = convertPathToAbsolute ($ filePath); echo $ realPath; pārtraukums; gadījums "3": atbalss "Ievadiet faila ceļu un nosaukumu:"; $ filePath = apgriezt (fgets (STDIN)); $ sizeOfFile = getSizeOfFile ($ filePath); echo "File". $ filePath. "lielums ir". $ sizeOfFile. "baiti."; pārtraukums; gadījums "4": echo "Ievadiet diska etiķeti:"; $ diskLabel = apdare (fgets (STDIN)); $ diskSpace = getDiskSizeAndFreeSpace ($ diskLabel); $ percentFree = $ diskSpace [1] / $ diskSpace [0]; echo "Disk". $ diskLabel. "ir". $ diskSpace [1]. "no". $ diskSpace [0]. "baiti bez maksas (" .round ($ percentFree * 100). "%)."; pārtraukums; gadījums "5": echo "Ievadiet failu, kuram ir vēlams piekļūt / mainīt / mainīt laikus:"; $ filePath = apgriezt (fgets (STDIN)); $ fileTimes = getFileTimes ($ filePath); echo "File". $ filePath. "pēdējo reizi piekļuva vietnē.. $ fileTimes [0].", pēdējoreiz tika mainīts vietnē.. $ fileTimes [1]. ", un pēdējoreiz modificēts vietnē.. $ fileTimes [2]; pārtraukums; reģistrs "0": noklusējums: echo "\ n \ n"; Izeja(); } 

Atlikušajā PHP skripta daļā ir funkcijas, kas izmanto un demonstrē PHP failu sistēmas pārvaldības funkcijas.

PHP nodrošina funkcijas ērtai piekļuvei faila ceļa detaļām, piemēram, faila direktorijai, paša faila pilnam nosaukumam, faila paplašinājumam un faila nosaukumam bez paplašinājuma. Daži no tiem ir parādīti iepriekš minētajā piemērā parseFilePath funkcija, kas tiek reproducēta nākamajā. Funkcija parāda PHP bāzes nosaukuma, dirname un pathinfo funkcijas.

PHP nodrošina informāciju par faila ceļu

/ ** * Parsējiet norādīto faila ceļu. Parāda šādas PHP funkcijas: * * - basename (): nodrošina faila ceļa pamatdaļu (faila nosaukums). * - dirname (): faila ceļa direktorija nosaukuma daļa. * - pathinfo (): visi ceļa komponenti (bāzes nosaukums, direktorija nosaukums, paplašinājums). * * @param $ filePath Parsējams faila ceļš. * @return Faila ceļa informācija vienā virknē. * / function parseFilePath ($ filePath) {echo "Parsē faila ceļu ...", $ filePath, "\ n"; $ fileBaseName = basename ($ filePath); $ fileDirectoryName = dirname ($ filePath); $ pathInfo = pathinfo ($ filePath); atgriezt "File Name:". $ fileBaseName. "\ nKataloga nosaukums:". $ fileDirectoryName. "\ nDatnes nosaukums:". $ pathInfo ['basename']. "\ nKataloga nosaukums:". $ pathInfo ['dirname']. " \ nFailu paplašinājums: ". $ pathInfo ['extension']." \ nFaila nosaukums bez paplašinājuma: ". $ pathInfo ['filename']; } 

Tagad tiek parādīta izvade no iepriekš minētās darbības ar faila paraugu.

PHP nodrošina noderīgu reālā ceļa funkciju, kas nodrošina nodrošinātā ceļa absolūto versiju. Piemēram, tas atrisinās mīkstās saites un relatīvos direktorijus, lai atgrieztu absolūto ceļu. Tas ir parādīts convertPathToAbsolute funkcija manā piemērā (un reproducēta nākamajā kodu sarakstā).

Absolūto ceļu demonstrēšana pa reālu ceļu

/ ** * Konvertējiet norādīto ceļu uz absolūtu ceļu. * * @param $ filePath Faila ceļam jābūt absolūtam. * @return Nodrošinātā faila ceļa absolūtā versija. * / function convertPathToAbsolute ($ filePath) {echo "Konvertē faila ceļu", $ filePath, "uz absolūto ceļu ... \ n"; atgriezt reālo ceļu ($ filePath); } 

Iepriekš minētā skripta daļa rada šādu izvadi.

PHP ļauj viegli noteikt faila lielumu, izmantojot pareizi nosaukto failu lieluma funkciju. Mans getSizeOfFile funkcija to parāda, un tā pati ir iekļauta nākamajā kodu sarakstā.

Faila lieluma iegūšana PHP

/ ** * Nosakiet iesniegtā faila lielumu. * * @param? $ filePath Nepieciešamā faila ceļš un nosaukums. * @return Faila lielumu norāda norādītais faila ceļš un nosaukums (baitos). * / function getSizeOfFile ($ filePath) {echo "Notiek faila lieluma iegūšana", $ filePath, "... \ n"; atgriezt faila izmēru ($ filePath); } 

Kods noved pie izejas, kas parādīta nākamajā attēlā.

PHP ļauj arī viegli iegūt informāciju par diska vietu. PHP funkcijas disk_total_space un disk_free_space ir parādītas zemāk esošo kodu sarakstā manai funkcijai getDiskSizeAndFreeSpace.

PHP diska izmērs un brīva vieta

/ ** * Nodrošiniet diska izmēru un brīvu vietu diskā paredzētajam diskam. * * @param $ diskLabel Tā diska etiķete, kura kopējais lielums un brīvā vieta ir jānodrošina *. * @return Divu elementu masīvs, no kuriem pirmais ir kopējā diska vieta (baitos) * un otrais - brīva vieta diskā (baitos). * / function getDiskSizeAndFreeSpace ($ diskLabel) {return masīvs (disk_total_space ($ diskLabel), disk_free_space ($ diskLabel)); } 

Iepriekš minētais piemērs ne tikai parāda PHP funkcijas disk_total_space un disk_free_space, bet arī parāda PHP masīva funkcijas izmantošanu, lai izveidotu masīvu un ievietotu elementus masīvā vienā paziņojumā.

Šīs skripta daļas izeja tiek parādīta tālāk.

Pēdējā funkcija manā skriptā ir getFileTimes un tā mērķis ir parādīt trīs PHP metodes, lai piekļūtu datumiem / laikiem, kas saistīti ar failiem. Konkrēti, tiek demonstrētas fileatime, filectime un filemtime funkcijas.

PHP failu laiki

$config[zx-auto] not found$config[zx-overlay] not found