Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 30% výuky zdarma!
Swift týden

Lekce 1 - Úvod do práce se soubory v PHP

Vítejte u první lekce kurzu zabývajícího se prací se soubory v jazyce PHP. V tomto kurzu si ukážeme, jak číst, zapisovat a zpracovávat různé typy souborů v PHP. Nejdříve ale musíme získat teoretické základy a objasnit si některé pojmy.

Proč potřebujeme soubory?

Veškerá data obsažená v proměnných jsou uložena v paměti RAM. Velkou výhodou je, že se rychle čtou a zapisují, nicméně po ukončení běhu skriptu se nám navždy ztratí. Co když tvoříme třeba návštěvní knihu a potřebujeme si uchovávat záznamy? Pro trvalé ukládání dat používáme právě soubory.

Typy souborů

Veškeré soubory dělíme na:

  • textové a
  • binární

Textové soubory

V textových souborech jsou data uložena tak, aby byla lidsky čitelná a šla otevřít v textových editorech (např. v Poznámkovém bloku). Textové soubory mohou někdy být zpracovatelné i strojově. V takovém případě mluvíme o souborech strukturovaných. V opačném případě se jedná o soubory nestrukturované.

Strukturované textové soubory

Obsah strukturovaných souborů je uspořádán tak, aby program věděl, jak ho má interpretovat. Dělí se na tzv. ploché soubory a hierarchické. Mezi těmito typy vybíráme podle „složitosti“ dat, které chceme uložit. Se všemi níže zmiňovanými formáty umí PHP pracovat pomocí vestavěných funkcí.

Ploché soubory (flat files) vs. hierarchické

Mezi jednoduché formy strukturovaných souborů patří tzv. ploché soubory (flat files), kde se většinou pracuje s oddělovači, které oddělují jednotlivé hodnoty primitivních datových typů (čísla, booleovské hodnoty true/false, řetězce). Jestliže chceme do souborů ukládat i stromové datové struktury, jako např. pole nebo objekty, musíme použít tzv. hierarchické soubory. Zde se způsob ukládání dat mezi formáty dosti liší.

Soubory CSV
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Nejčastěji používaný formát plochých souborů je CSV (Comma Separated Values). Jako oddělovače používáme čárku či středník a jednotlivé záznamy dáváme na samostatné řádky:

"Jan Novák",21,Programátor
"Marie Svobodová",45,Prodavačka
"Tomáš Procházka",27,Učitel
Soubory XML

Hierarchický formát XML (eXtensible Markup Language) nápadně připomíná svou vnitřní strukturou HTML. V dnešní době jsou spíše nahrazovány formátem JSON, který je kratší a jednodušší:

<?xml version="1.0" encoding="UTF-8" ?>
<lide>
    <clovek>
        <jmeno>Jan Novák</jmeno>
        <vek>21</vek>
        <povolani>Programátor</povolani>
    </clovek>
    <clovek>
        <jmeno>Marie Svobodová</jmeno>
        <vek>45</vek>
        <povolani>Prodavačka</povolani>
    </clovek>
    <clovek>
        <jmeno>Tomáš Procházka</jmeno>
        <vek>27</vek>
        <povolani>Učitel</povolani>
    </clovek>
</lide>
Soubory JSON

JSON (JavaScript Object Notation) je dnes asi nejpoužívanější formát hierarchických souborů. Již název formátu napovídá, že je zápis JSONu shodný se zápisem objektů v JavaScriptu. Ne-ASCII znaky v řetězcích musí být tzv. escapovány, jak vidíme na příkladu. Je tomu tak z důvodu lepší přenositelnosti:

[
    {
        "jmeno": "Jan Nov\u00e1k",
        "vek": 21,
        "povolani": "Program\u00e1tor"
    },
    {
        "jmeno": "Marie Svobodov\u00e1",
        "vek": 45,
        "povolani": "Prodava\u010dka"
    },
    {
        "jmeno": "Tom\u00e1\u0161 Proch\u00e1zka",
        "vek": 27,
        "povolani": "U\u010ditel"
    }
]

Nestrukturované textové soubory

Nestrukturované textové soubory, též nazývané prostý text, jsou určeny pouze ke čtení lidmi a nedají se programově zpracovat. Označujeme tak například dopis napsaný v Poznámkovém bloku. Přípona těchto souborů je standardně .txt:

Ahoj,
jmenuji se Pavel a je mi 26 let. Pracuji jako programátor v jedné nejmenované pražské firmě.
Programování je zároveň mým největším koníčkem. Mimo to rád plavu a sleduji seriály.

Myslíš, že bychom se mohli někdy sejít?

Měj se hezky,
Pavel

Binární soubory

Data můžeme uložit také v tzv. binární formě. Ve své podstatě se jedná pouze o otisk určité části paměti RAM. Tyto soubory nejsou lidsky čitelné, nelze je otevřít textovým editorem a jsou vždy strukturované. V této podobě jsou na disku uložené například obrázky a videa. V PHP se se zpracováním těchto souborů setkáme málokdy a proto se jimi v této lekci nebudeme dopodrobna zabývat.

Cesty a názvy souborů

Jak víme, tak soubory se na disku ukládají do složek. Složky mohou obsahovat podsložky a vzniká nám tak hierarchická/stro­mová struktura. Když budeme pracovat se soubory, budeme muset dát PHP informaci, kde (v jaké složce) má soubor hledat. Toho docílíme tak, že funkci, která bude se souborem provádět nějakou činnost (čtení, zápis, …), předáme cestu k požadovanému souboru. Tyto cesty mohou být absolutní nebo relativní.

Relativní cesty

Název může napovídat, že relativní cesta k souboru se bude k něčemu vztahovat. V případě PHP se relativní cesta vztahuje vždy ke složce, kde se nachází náš skript:

soubor.txt
nejaka-slozka/soubor.txt
../soubor.txt
../dalsi-slozka/soubor.txt

V prvním a nejjednodušším příkladu označujeme soubor s názvem soubor.txt v aktuální složce, v druhém označujeme soubor, který se nachází ve složce nejaka-slozka (která je v aktuální složce), ve třetím soubor v hierarchii o jednu složku výše a v posledním soubor, který se nachází ve složce dalsi-slozka, která se nachází o jednu složku výše.

Můžeme si všimnout, že jako oddělovače složek používáme normální lomítka (/) a nikoliv lomítka zpětná (\), jako je to běžné na OS Windows. Na webhostingu a na serverech obecně je totiž v naprosté většině případů operační systém Linux, kde se pro oddělování složek používají právě klasická lomítka a zpětná lomítka se používat nedají. Naopak to ale funguje. :-)

Pokud si s tím nechcete příliš lámat hlavu, tak je nejdůležitější vědět, že jestliže budeme na soubor referovat pouze jeho názvem, PHP ho bude hledat ve složce, kde máme PHP skript nahraný.

Absolutní cesty

Tyto cesty se k žádné další složce nevztahují a píšeme je celé, od tzv. kořenové složky (v případě Windows je to písmeno disku, v případě Linuxu složka /). Tento typ cest si zde uvedeme jen pro kompletnost, protože bych je v PHP nedoporučoval používat. Náš web totiž můžeme přesouvat mezi různými servery, kde bude absolutní cesta ke složce s naším webem zcela jiná a zbytečně bychom si tak přidělávali problémy. Mohlo by se stát to, že po přesunu webu by naše PHP skripty hledaly soubor někde, kde není nebo v horším případě v nějakém cizím prostoru :) Absolutní cesta může vypadat třeba takto:

/var/www/html/mujweb.cz/soubor.txt
C:\Apache2\htdocs\mujweb.cz\soubor.txt

To by pro dnešní lekci bylo vše :)

V příští lekci, Práce s textovými soubory v PHP, si ukážeme, jak číst a zapisovat (nejen) nestrukturované textové soubory.


 

Všechny články v sekci
Soubory a práce s nimi v PHP
Článek pro vás napsal EthernetLord
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Aktivity (4)

 

 

Komentáře

Avatar
Jiří Fanta
Člen
Avatar
Jiří Fanta:2. srpna 11:39

Ahoj, hezky popsano. Jen bych chtel dodat, ze v ukazce xml souboru nejsou ukoncovaci tagy pro povolani. :) Je to asi jen preklep, ale nekoho by to mohlo zmast :)

 
Odpovědět
2. srpna 11:39
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Samuel Hél
Tým ITnetwork
Avatar
Odpovídá na Jiří Fanta
Samuel Hél:2. srpna 12:43

Díky, už je to opraveno :)

 
Odpovědět
2. srpna 12:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.