Počítačové lekce

Vyžadovat popis php. Rozdíl mezi require, include, require_once a include_once? Pokud zahrnout nebo vyžadovat nefunguje

Operátoři PHP: require(), require_once(), include_once()

Datum: 2012-10-15

PHP funkce: require(), require_once(), include(), include_once()

V minulé lekci jsme práci podrobně probrali. Připomínám, že operátor zahrnout() v PHP nahradí obsah jedné webové stránky jinou webovou stránkou. Ale PHP má další funkce, které vám umožní implementovat podobný úkol. Jedná se zejména o tyto funkce:

include_once()
vyžadovat()
vyžadovat_jednou()

Pro vložení obsahu konkrétní webové stránky stačí jako argument (v závorce) k těmto funkcím zadat cestu k požadovanému souboru. Například takto:

include("soubor.php") nebo vyžadovat("soubor.php")

Úkol všech těchto funkcí je stejný: vložit požadovaný kód nebo text z jednoho souboru do jiného souboru. Tyto funkce se však navzájem liší. Pojďme na to přijít.

Přípona" _jednou" umožňuje propojit kód souboru pro nahrazení do jiného souboru pouze jednou, bez ohledu na to, kolik volání se uskuteční. Pro názornost se podívejme na jednoduchý příklad. V minulé lekci jsme přišli na to, že pomocí operátoru zahrnout(), můžete umístit záhlaví webu do samostatného souboru hlavička.php, pro zjednodušení budeme předpokládat, že do tohoto souboru umístíme grafické logo stránek. Na správné místo na webové stránce (v tomto případě na místo záhlaví webu) napíšeme kód Výpis 1.

Výpis 1.

V souladu s tím se logo webu také zobrazí dvakrát, přibližně takto:

Souhlas, nevypadá to moc hezky, že? Ukazuje se, že operátor zahrnout() dvakrát jej vytáhne ze složky bloky soubor hlavička.php a nahradí jej dvakrát místo záhlaví webu.

Obecně může přiložený soubor obsahovat funkce, které po přidání do zdrojového souboru mohou generovat chyby a vaše webová stránka se nemusí vůbec načíst.

Na velkých stránkách je velmi snadné zmást, kde a jaký soubor jste zahrnuli a zda jej můžete znovu zahrnout, což může vést k chybě. Proto přišli s předponou " _jednou“ k funkcím zahrnout A vyžadovat, který vloží obsah souboru do jiné webové stránky pouze jednou.

Jak se include() liší od require()

Nyní pojďme mluvit o funkci zahrnout() odlišná od funkce vyžadovat(). V jejich práci mezi nimi nejsou žádné rozdíly. Obě funkce začleňují obsah jednoho souboru do druhého. Ale mají rozdíl a spočívá v tom, jak reagují na situaci, kdy soubor, který připojujeme, není na svém místě.

Vraťme se k předchozímu příkladu kódu Výpis 1. Máme následující kód:

Include("bloky/hlavička.php");

Zkusme soubor smazat hlavička.php, který skutečně připojíme, např. soubor je poškozen nebo byl omylem smazán ze severu.

Aktualizujeme testovací soubor a zobrazí se tato chyba:

Jak můžete vidět, objeví se zpráva oznamující, že v adresáři (složce) bloky soubor nenalezen hlavička.php, ale program je stále spuštěn a zbytek webové stránky webu se zobrazuje normálně.

Co když napíšeme kód ( Výpis 3) pomocí funkce vyžadovat():

Výpis 3.

Require("bloky/hlavička.php");

To je to, co máme zobrazí se pouze jedna chybová zpráva, a program se již nespustí a uvidíte pouze tuto zprávu.

Konstrukce vyžadují inkluze

Design vyžadovat umožňuje zahrnout soubory do skriptu PHP spouštějícího skript PHP. Obecná syntaxe vyžadovat takový:

vyžadovat název souboru;

Interpret při spouštění (přesně při startu, nikoli při provádění!) programu jednoduše nahradí instrukci obsahem souboru file_name (tento soubor může obsahovat i PHP skript, orámovaný jako obvykle značkami A ?> ). Navíc to udělá bezprostředně před spuštěním programu (na rozdíl od toho, co je popsáno níže). To může být docela výhodné pro zahrnutí různých šablon stránek s HTML kódem do výstupu skriptu. Zde je příklad:

Soubor Header.html:

Je to titul

Soubor Footer.html:
Domácí společnost, 2005.

soubor Script.php
vyžadovat "header.htm";
// Skript zobrazí tělo samotného dokumentu
vyžadovat "footer.htm";
?>

Takže design vyžadovat umožňuje sestavit PHP skripty z několika samostatných souborů, které mohou být např html-stránky a php- skripty.

Design vyžadovat podporuje zahrnutí vzdálených souborů (od PHP 4.3.0). Například:

// Následující příklad nefunguje, protože se pokouší zahrnout místní soubor
vyžadovat "file.php?foo=1&bar=2" ;
// Následující příklad funguje
vyžadovat ;
?>

! Design vyžadovat umožňuje zahrnout vzdálené soubory, pokud je tato funkce povolena v konfiguračním souboru PHP. Detailní informace .

Včetně vzdálených souborů

PHP umožňuje pracovat s objekty URL jako s běžnými soubory. Packery, dostupné ve výchozím nastavení, se používají pro práci se vzdálenými soubory pomocí protokolu ftp nebo http.

Pokud jsou v PHP zahrnuty „adresy URL fopen wrapper“ (jako ve výchozí konfiguraci), můžete zadat soubor, který má být zahrnut, pomocí adresy URL (přes HTTP) namísto místní cesty. Pokud cílový server interpretuje cílový soubor jako kód PHP, proměnné mohou být předány do začleněného souboru pomocí řetězce dotazu URL, jako v HTTP GET. Přísně vzato to není totéž jako zahrnout soubor a nechat jej zdědit rozsah proměnných nadřazeného souboru; skript totiž běží na vzdáleném serveru a výsledek je pak zahrnut do lokálního skriptu.

Aby bylo dostupné vzdálené zahrnutí souborů, musíte v konfiguračním souboru (php.ini) nastavit allow_url_fopen=1.

Poznámka: Verze PHP pro Windows starší než PHP 4.3.0 nepodporují možnost používat vzdálené soubory pomocí této funkce, i když je povolena volba allow_url_fopen.


/* To předpokládá, že www.example.com je nakonfigurován na parse.php
* soubory, nikoli soubory .txt. Také "Works" zde znamená, že proměnné
* $foo a $bar jsou k dispozici v přiloženém souboru. */

//Nebude fungovat, protože soubor.txt nezpracovává www.example.com jako PHP
zahrnout "http://www.example.com/file.txt?foo=1&bar=2";

// Nebude fungovat, protože hledá soubor "file.php?foo=1&bar=2" v místním
// souborový systém.
include "file.php?foo=1&bar=2" ;

// Funguje následující příklad:
zahrnout "http://www.example.com/file.php?foo=1&bar=2";

$foo = 1 ;
$bar = 2;
zahrnout "soubor.txt" ; // Funguje
zahrnout "soubor.php" ; // Funguje

?>

Při vývoji jakéhokoli webu a jakékoli složitosti se musíte v první řadě zaměřit na správnost kódu. Pokud například vytvoříte celý kód s mnoha soubory na jedné stránce, povede to ke zmatkům a velkým nepříjemnostem. Chcete-li to provést, musíte soubory uspořádat do kategorií a poté je připojit k hlavnímu kódu na správných místech. Tuto metodu lze nazvat zahrnuté soubory. To je celkem jednoduchý název, ale pro člověka, který se s tímto tématem setkává poprvé, se tak dá nazvat. A abyste mohli shromáždit všechny zahrnuté soubory do jednoho kódu, musíte použít to, co je popsáno v předchozím článku, nebo použít návod vyžadovat a vyžadovat_jednou které jsou popsány v tomto textu.

Praktické návody vyžadovat a vyžadovat_jednou provádět stejné funkce jako pokyny include a include_once, s výjimkou některých bodů.

Syntaxe těchto pokynů je:

Require_once 'config.php'; - soubor nastavení
require_once 'header.php'; - záhlaví webu
vyžadovat 'left.php'; - levý boční panel
vyžadovat 'content.php'; — obsah stránek
vyžadovat 'footer.php'; - zápatí webu

A rozdíl je tento. Při zpracování kódu PHP nejprve skript převede na interní reprezentaci a poté začne zpracovávat kód řádek po řádku. A pokud PHP najde v kódu soubor, který je součástí instrukce zahrnout, poté se po načtení souboru zcela přepne do jeho provádění, převede soubor na interní reprezentaci a teprve poté jej krok za krokem provede...

Zde jsou pokyny vyžadovat funguje trochu jinak. Soubor spojený s jeho nápovědou je přeložen před spuštěním skriptu, jinými slovy, v době zpracování veškerého kódu je tento soubor již přeložen!!! A odtud závěr - soubory propojené instrukcemi vyžadovat- bude fungovat rychleji. A pro mě je například tento návod výhodnější. Ale samozřejmě je tu jedno ALE! Když prohlížeč načte stránku, může dojít k selhání internetu a uživatel uvidí pouze tu část stránky, která se již načetla. Nebo pokud dojde k nějakému selhání zpracování, zpracování nebude pokračovat za zmrazený soubor. To se však na webových stránkách stává zřídka, takže tento pokyn je stále vhodnější.

Málem jsem zapomněl. Instrukce vyžadovat_jednou- také plní roli zahrnutí souboru do celkového kódu pouze jednou, takže nedochází k opakování.

To je téměř vše, co potřebujete vědět o tom, jak připojit soubory k obecnému toku psaní kódu. Hlubší znalosti obvykle přicházejí procesem učení a v závislosti na potřebách, které samozřejmě nemohu předvídat. Děkuji za pozornost a omlouvám se za autorovo podání těchto témat.

července 2019
Po W St Čtvrtek So slunce
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

REKLAMNÍ

    Příkaz include v PHP, příkaz include_once v php, zahrnuté soubory. Při vývoji jednoduchého dynamického webu nebo pokročilejších programů je to nemožné

    Struktura enginu webu, z čeho se stroj webu skládá, ovládací panel webu, engine šablon. V předchozím článku to bylo popsáno

    Co je to webový engine, jak vytvořit webový engine, systém pro správu webu v PHP. Abychom pochopili, co to je

Jednou z nejzábavnějších a nejužitečnějších funkcí PHP je vložení dalšího souboru. Web má například horní nabídku, spodní nabídku a mezi nimi samotný obsah stránky. A například na 10 stránkách webu se používá spodní menu. V určitém okamžiku v něm bylo potřeba provést změny. V html byste ručně prováděli změny v každém jednotlivém souboru, ale php vám umožňuje výrazně zjednodušit práci se stránkou! Kód pro spodní nabídku může být obsažen v samostatném souboru a na každou z 10 stránek můžete jednoduše zahrnout tento samostatný soubor! To znamená, že všechny změny je nyní potřeba provést pouze v souboru s nabídkou a na 10 dalších se zobrazí se změnami.

Význam připojení v php v jednoduchém ruském jazyce:

Soubor 1.php
Horní menu

Soubor 2.php
Spodní menu

Soubor example.php
Připojit soubor 1.php
Obsah stránky
Připojit soubor 2.php

V důsledku zpracování souboru example.php dojde k jeho zobrazení
Horní menu
Obsah stránky
Spodní menu
Proto, abyste mohli cokoli změnit ve spodním menu, musíte provést změny pouze v souboru 2.php

Cesta k souboru

Soubor je připojen podle cesty určené pro soubor. Existují dvě možnosti cesty: relativní a absolutní. Relativní - jedná se o označení cesty k připojenému souboru vzhledem k souboru s pokyny pro připojení. Absolute – zadání úplné cesty k zahrnutému souboru.

PHP kód

// příklad relativní cesty
include "include/your_file.php"; // soubor je ve složce include, která se nachází ve stejném adresáři jako soubor připojení

// příklad absolutní cesty
include $_SERVER["DOCUMENT_ROOT"]."/include/your_file.php"; // $_SERVER["DOCUMENT_ROOT"] - označuje kořenový adresář webu

include a include_once

zahrnout()- konstrukce navržená tak, aby zahrnovala soubory do kódu skriptu PHP během provádění skriptu PHP. Při zpracování kódu je instrukce nahrazena obsahem přiloženého souboru. Doporučuji se hned podívat na příklad.

Podívejme se, jak funguje zahrnutí pomocí dvou souborů jako příklad: index.php A text.php. Pro jednoduchost práce předpokládejme, že jsou umístěny ve stejném adresáři.

PHP kód(soubor index.php)

Echo "Prostý text obsažený v hlavním souboru";
zahrnout "text.php"; // zahrnout obsah souboru text.php

?>
PHP kód(soubor text.php)

Echo "Text obsažený v přiloženém souboru";

?>
Výsledkem spuštění souboru index.php bude:

Prostý text obsažený v hlavním souboru
Text obsažený v přiloženém souboru
Je to opravdu pohodlné? Nyní změnou obsahu v souboru text.php bude výsledek index.php úplně jiný!

Nyní pojďme mluvit o jiném designu - zahrnout_jednou. Funguje úplně stejně jako include, pouze se vytvoří později a pro případy, kdy soubor nelze znovu zahrnout. Například se obáváte, že v důsledku chyby můžete připojit soubor 2 nebo vícekrát, což ovlivní nefunkčnost stránky a zobrazení odpovídající chybové zprávy.

PHP kód

Include_once "text.php"; // soubor text.php bude zahrnut pouze jednou

// níže uvedená opětovné připojení nebudou zohledněna a zobrazena
// a nezpůsobí zobrazení chybové zprávy
include_once "text.php"; // nic se nestane

vyžadovat a vyžadovat_jednou

Instrukce require a require_once fungují identicky jako include a include_once s výjimkou pouze jedné funkce – pokud zahrnutý soubor nebude nalezen, provádění skriptu se zastaví (skript se již nebude číst), zatímco include a include_once jednoduše zobrazí varování a pokračovat v dalším provádění skriptu.

Pokud zahrnout nebo vyžadovat nefunguje

Abyste pochopili důvody, proč zahrnutí nefunguje, doporučuji zkontrolovat vše krok za krokem. Bez ohledu na to, jak jasné a povrchní mohou být níže uvedené body, zkontrolujte vše od samého začátku

1. Zkontrolujte, zda váš server a php fungují a zda vůbec nějaký php kód na webu funguje
2. Zkontrolujte, zda soubor zahrnutí existuje
3. Zkontrolujte, zda je v připojení správně zadán název souboru a přípona
4. Ujistěte se, že přiložený soubor php je skutečně umístěn na vámi zadané adrese
5. Zkuste zadat absolutní cestu (úplnou cestu k souboru) spíše než relativní cestu.

Příklad PHP kód

Include "http://www.example.com/include/vas_soubor.php";

// DOCUMENT_ROOT - označuje kořenový adresář zdroje
include $_SERVER["DOCUMENT_ROOT"]."/include/your_file.php";

6. Pokud se váš soubor nepřipojí a nezobrazí se žádná chyba, vytvořte soubor v adresáři se souborem, který připojujete .htaccess s následujícím obsahem

Php_flag display_errors Zapnuto
nebo v souboru php, před připojením vložte následující řádek

Error_reporting(E_ALL);
Obě nastavení vynutí zobrazení chyb

Jak víte, PHP má 4 funkce pro vkládání dalších souborů. Tento zahrnout, zahrnout_jednou, vyžadovat A vyžadovat_jednou. Jak se liší a jak je správně používat?

Nejprve se podívejme na rozdíl mezi zahrnout A vyžadovat. Tyto dvě funkce se liší pouze reakcí na absenci přiloženého souboru. Funkce zahrnout(“enable”), pokud zadaný soubor chybí, vygeneruje chybovou zprávu jako E_WARNING, ale provádění programu bude pokračovat. Na rozdíl od ní, vyžadovat(“vyžadovat”), pokud není obsažen žádný soubor, generuje fatální chybu (E_ERROR), která vede k okamžitému zastavení běžícího skriptu.

Na základě vašich znalostí o tom, jak se váš kód provádí, můžete použít jeden nebo jiný operátor. Například, pokud se jedná pouze o kus HTML, který obecně neovlivňuje tok programu, nebo se jedná o nějaké drobné zásuvné moduly, bez kterých může zbytek programu normálně fungovat, pak klidně použijte zahrnout. V ostatních případech doporučuji použít vyžadovat. Tím se zabrání možnosti nesprávného spuštění kódu a v případě chyby (např. přiložený soubor byl smazán virem nebo byl ztracen během procesu vývoje) se skript jednoduše ukončí. V některém z budoucích článků vám ukážu, jak sledovat absolutně všechny nestandardní situace v kódu a být si vědom toho, co se děje uvnitř webu.

Nyní se podívejme na struktury zahrnout_jednou A vyžadovat_jednou. Od jednoduchého zahrnout A vyžadovat odlišují se koncovkou „_once“, která zabraňuje opětovnému zařazení stejných souborů.

Pokud například váš zahrnutý soubor obsahuje popisy tříd nebo funkcí, pak takový soubor nelze znovu zahrnout, protože bude spuštěn znovu a PHP při pokusu o definování tříd nebo funkcí s již existujícími názvy vyvolá fatální chybu. Není pochyb o tom, že je možné navrhnout kód tak, aby k opětovnému připojení nikdy nedošlo, ale jde o zbytečná omezení a zbytečnou práci. Proto jsou funkce s příponou „_once“ užitečné a nezbytné.

Ve své praxi používám dva typy souborů. Prvním typem jsou soubory, které obsahují jednu nebo více tříd a neobsahují kód, který se spouští „přímo“. Takové soubory vždy připojuji pomocí vyžadovat_jednou. Druhým typem jsou šablony nebo části šablon obsahující HTML a nějaký PHP kód. Takové soubory připojuji pomocí vyžadovat, protože někdy lze stejný kus šablony použít na stránce několikrát.

nikdy nepoužívám zahrnout A zahrnout_jednou, protože absenci souboru, který by měl být, považuji za kritickou situaci, která vyžaduje okamžité řešení bez jakýchkoli kompromisů. A pokud potřebuji zahrnout soubor, jehož přítomnost je na pochybách, pak jednoduše nejprve zkontroluji jeho přítomnost pomocí is_file().

Při použití include existuje ještě jeden trik. Přestože se ve skutečnosti nejedná o funkci, ale o jazykovou konstrukci, operátor uvnitř obsaženého souboru funguje vrátit se. A proto include vrátí tuto hodnotu do volaného kódu. Vypadá to takhle

$ret = include 'soubor.php';

To je pro dnešek vše, programujte správně!