Funcții PHP: require(), require_once(), include(), include_once(). Inclusiv fișiere în PHP

Funcția require() se înlocuiește cu fișierul specificat, funcționează similar cu instrucțiunea #include din C. Dacă PHP are "URL fopen wrappers" activat (așa cum este în mod implicit), puteți specifica Adresa URL a fișieruluiîn loc de o adresă locală. O notă importantă despre modul în care funcționează acest lucru este că, atunci când un fișier este inclus folosind funcțiile include() sau require(), analizatorul trece de la modul PHP la modul HTML la începutul fișierului include și comută înapoi doar la sfârșitul includerii. fişier. Prin urmare, orice cod din fișierul include care trebuie executat de PHP trebuie să fie inclus în etichete de cod PHP (). require() nu este de fapt o funcție PHP, este o construcție a limbajului; Aceasta explică unele diferențe între reguli și funcții. De exemplu, require() nu este supus niciunei structuri de control. În al doilea rând, această funcție nu returnează nicio valoare, încercarea de a citi valoarea require() va avea ca rezultat o eroare. Spre deosebire de funcția include(), require() va citi întotdeauna valoarea fișierului inclus, chiar dacă linia pe care se află nu este niciodată executată. Dacă doriți să includeți un fișier într-o anumită condiție, utilizați include(). Aplicarea condițiilor nu funcționează cu funcția require(). De asemenea, require() nu poate fi folosit în bucle, deoarece require() apelează fișierul o singură dată. În aceste scopuri, utilizați funcția include(). require("header.inc");
Când un fișier este inclus folosind funcția require(), codul conținut va moșteni mediul în care a fost apelat. Orice variabilă care acționează în interiorul fișierului apelat va acționa și în fișierul însuși. Dacă require() este apelat în interiorul unei funcții, atunci tot codul din fișierul apelat se va comporta la fel ca și cum ar fi fost definit în acea funcție. /* Acest exemplu presupune că someserver este configurat pentru a analiza fișiere .php * și nu fișiere .txt. De asemenea, „funcționează” aici înseamnă că * variabilele $varone și $vartwo sunt disponibile în * fișierul require()ed. */ /* Nu va funcționa; fișierul.txt nu a fost gestionat de someserver. */ necesită ("http://someserver/file.txt?varone=1&vartwo=2"); /* Nu va funcționa; caută un fișier numit „file.php?varone=1&vartwo=2” * pe sistemul de fișiere local. */ necesită („file.php?varone=1&vartwo=2”); /* Funcționează. */ require ("http://someserver/file.php?varone=1&vartwo=2"); $varone = 1 ("file.txt");

A face codul programului mai ușor de citit, ați putea, de exemplu, să puneți definiții de funcție și/sau de clasă dosar separat. Capacitatea de a include fișiere în PHP este oferită de patru instrucțiuni de limbă:

  • include
  • cere
  • include_o dată
  • cere_o dată

Toate cele patru instrucțiuni pot lua un nume ca parametru fișier local. Declarațiile include și require sunt foarte asemănătoare ca acțiune și diferă doar prin reacția lor la imposibilitatea obținerii resursei solicitate. De exemplu, dacă o resursă este indisponibilă, include și include_once emite un avertisment și încearcă să continue execuția programului. require și require_once nu mai procesează pagina dacă resursa solicitată nu este disponibilă.

include

Declarația include vă permite să includeți și să atașați alte scripturi la scriptul dvs. PHP. Când programul pornește, interpretul va înlocui pur și simplu instrucțiunea cu conținutul fișierului inclus. Să vedem cum funcționează, creați un fișier numit add.php și scrieți în interior:

Acum să creăm un alt fișier și să-l numim, de exemplu, test.php , în care vom include fișierul add.php:

\$var2 = $var2" ?>

După cum puteți vedea din exemplu, instrucțiunea include anexează conținutul fișierului inclus, datorită căruia programul dvs. obține acces la alte variabile, funcții, clase etc.

Notă: Puteți da fișierelor incluse orice nume, dar adăugați întotdeauna extensia .php, deoarece dacă utilizați o altă extensie, atacatorii vă pot solicita fișierul, iar serverul web va returna textul acestuia. Acesta este un risc de securitate deoarece parolele sau modul în care funcționează programul dvs. ar putea fi dezvăluite, oferind atacatorilor o ușă în spate. Pentru a preveni acest lucru, fișierele incluse trebuie procesate de interpretul PHP.

Conexiune în interiorul unei funcții

Dacă includerea unui fișier are loc în interiorul unei funcții, atunci tot codul conținut în fișierul include se va comporta ca și cum ar fi fost definit în interiorul acelei funcții, de exemplu. codul va avea domeniu local. Să rescriem puțin exemplul anterior:

Acum să adăugăm o funcție la test.php:

În domeniul global: $var1"; ?>

Deoarece am declarat $var1 global în cadrul funcției, acesta devine disponibil și în domeniul global.

Calea către fișier

Fișierele sunt incluse pe baza căii specificate către fișier, dacă calea nu este specificată, calea specificată în directiva include_path (în configurație fișier php.ini). Dacă fișierul nu este găsit la calea specificată în include_path , instrucțiunea include va încerca să verifice directorul de lucru curent în care se află scriptul care include fișierul dacă instrucțiunea include nu poate găsi fișierul, va fi emis un avertisment;

Dacă este specificată o cale - indiferent dacă este absolută sau relativă (în raport cu directorul curent în care se află scriptul de includere) - directiva include_path va fi ignorată.

include_o dată

Comportamentul include_once este identic cu instrucțiunea include, singura diferență fiind că dacă codul din fișier a fost deja inclus o dată, acesta nu va fi inclus și executat din nou. Acest lucru ajută la evitarea problemei suprascrierii funcțiilor, variabilelor etc. Pentru a înțelege mai bine cum funcționează, iată un exemplu:

În test.php vom încerca să executăm următorul cod:

Acest lucru va avea ca rezultat un mesaj de eroare, deoarece funcțiile nu pot fi suprascrise. Pentru a evita greșelile acest fel, trebuie folosită instrucțiunea include_once. Să rescriem codul în fișierul test.php:

cere și cere_o dată

Declarațiile require și require_once funcționează identic pentru a include și include_once, cu excepția unei diferențe. Dacă fișierul include nu este găsit, execuția scriptului va fi oprită, în timp ce include și include_once vor emite un avertisment și vor continua execuția scriptului.

Sfat: încercați să renunțați complet la utilizarea include și require, folosiți analogii lor cu sufixul _once. Acest lucru va face mai ușor de descompus mari și program complexîn module relativ independente.

După cum știți, PHP are 4 funcții pentru includerea altor fișiere. Acest include, include_o dată, cereȘi cere_o dată. Cum diferă ele și cum să le folosești corect?

În primul rând, să ne uităm la diferența dintre includeȘi cere. Aceste două funcții diferă doar prin reacția lor la absența unui fișier inclus. Funcţie include(„activare”), dacă fișierul specificat lipsește, va genera un mesaj de eroare precum E_WARNING, dar execuția programului va continua. Spre deosebire de ea, cere(„necesită”) dacă nu există niciun fișier inclus, se afișează eroare fatala(E_ERROR), care determină oprirea imediată a scriptului care rulează.

Astfel, pe baza cunoștințelor tale despre cum este executat codul tău, poți folosi unul sau altul operator. De exemplu, dacă aceasta este doar o bucată de HTML care, în general, nu afectează fluxul programului, sau acestea sunt câteva pluginuri minore fără de care restul programului poate funcționa normal, atunci nu ezitați să utilizați include. În alte cazuri, recomand folosirea cere. Acest lucru va preveni posibilitatea executării incorecte a codului și în cazul unei erori (de exemplu, fișierul inclus a fost șters de un virus sau a fost pierdut în timpul procesului de dezvoltare) scriptul se va încheia pur și simplu. Într-un articol viitor vă voi arăta cum să urmăriți absolut totul. situatii non-standardîn cod și fiți conștienți de ceea ce se întâmplă în interiorul site-ului.

Acum să ne uităm la structuri include_o datăȘi cere_o dată. Din simplu includeȘi cere se disting prin terminația „_once”, care împiedică reintroducerea acelorași fișiere.

De exemplu, dacă fișierul dvs. inclus conține descrieri ale claselor sau funcțiilor, atunci un astfel de fișier nu poate fi inclus din nou, deoarece va fi executat din nou și PHP va produce o eroare fatală când va încerca să definească clase sau funcții cu nume deja existente. Nu există nicio îndoială că este posibil să proiectați codul în așa fel încât reconectarea să nu aibă loc niciodată, dar aceasta este restricții inutile și muncă inutilă. Prin urmare, funcțiile cu sufixul „_once” sunt utile și necesare.

În practica mea, folosesc două tipuri de fișiere. Primul tip sunt fișiere care conțin una sau mai multe clase și nu conțin cod care este executat „direct”. Conectez întotdeauna astfel de fișiere folosind cere_o dată. Al doilea tip sunt șabloane sau bucăți de șabloane care conțin HTML și ceva cod PHP. Conectez astfel de fișiere folosind cere, deoarece uneori aceeași bucată de șablon poate fi folosită de mai multe ori pe o pagină.

Nu folosesc niciodată includeȘi include_o dată, pentru că consider absența unui dosar care ar trebui să fie o situație critică care necesită o soluție imediată fără compromisuri. Și dacă trebuie să includ un fișier a cărui prezență este îndoielnică, atunci pur și simplu verific prezența acestuia folosind is_file().

Mai există un truc atunci când utilizați include. În ciuda faptului că aceasta nu este de fapt o funcție, ci o construcție a limbajului, operatorul din fișierul inclus funcționează întoarcere. Și, prin urmare, include returnează această valoare la codul apelat. Arata cam asa

$ret = include 'fişier.php';

Asta e tot pentru azi, programeaza corect!

Una dintre cele mai distractive și caracteristici utile php - conectarea unui alt fișier. De exemplu, site-ul are Meniul de sus, jos și între ele conținutul paginii. Și, de exemplu, pe 10 pagini ale site-ului este folosit meniul de jos. La un moment dat, trebuiau făcute modificări. În html, ați face manual modificări în fiecare fișier individual, dar php vă permite să simplificați semnificativ lucrul cu site-ul! Codul pentru meniul de jos poate fi conținut într-un fișier separat, iar pe fiecare dintre cele 10 pagini puteți include pur și simplu acest fișier separat! Adică, toate modificările trebuie făcute acum numai în fișierul cu meniu, iar pe altele 10 va fi afișat cu modificări.

Sensul conexiunii în php simplu in rusa:

Fișierul 1.php
Meniul de sus

Fișierul 2.php
Meniu inferior

Fișierul Exemplu.php
Fișierul de conectare 1.php
Conținutul paginii
Fișierul de conectare 2.php

Ca rezultat al procesării fișierului example.php, acesta va fi afișat
Meniul de sus
Conținutul paginii
Meniu inferior
În consecință, pentru a schimba ceva în meniul de jos, trebuie să faceți modificări numai în fișierul 2.php

Calea către fișier

Fișierul este conectat conform căii specificate pentru fișier. Există două opțiuni de cale: relativă și absolută. Relativ - aceasta este o indicație a căii către fișierul conectat în raport cu fișierul cu instrucțiunile de conectare. Absolut - specificând calea completă către fișierul inclus.

Cod PHP

// exemplu de cale relativă
include „include/your_file.php”; // fișierul se află în folderul include, care se află în același director cu fișierul de conexiune

// exemplu de cale absolută
include $_SERVER["DOCUMENT_ROOT"]."/include/your_file.php"; // $_SERVER["DOCUMENT_ROOT"] - indică directorul rădăcină al site-ului

include și include_once

include()- un construct conceput pentru a include fișiere în cod Script PHPîn timp ce executați un script PHP. La procesarea codului, instrucțiunea este înlocuită cu conținutul fișierului atașat. Vă sugerez să vă uitați imediat la un exemplu.

Să vedem cum funcționează include folosind două fișiere ca exemplu: index.phpȘi text.php. Pentru simplitatea muncii, să presupunem că acestea se află în același director.

Cod PHP(fişier index.php)

Echo „Text simplu conținut în fișierul principal”;
include "text.php"; // include conținutul fișierului text.php

?>
Cod PHP(fişier text.php)

Echo „Text conținut în fișierul inclus”;

?>
Rezultatul rulării fișierului index.php va fi:

Text simplu conținut în fișierul principal
Text conținut în fișierul inclus
Este chiar convenabil? Acum, prin modificarea conținutului fișierului text.php, rezultatul index.php va fi complet diferit!

Acum să vorbim despre un alt design - include_o dată. Funcționează exact la fel ca include, creat doar mai târziu și pentru acele cazuri în care fișierul nu poate fi reinclus. De exemplu, vă este teamă că, ca urmare a unei erori, puteți conecta un fișier de 2 sau mai multe ori, ceea ce va afecta operare incorectă pagina și primiți mesajul de eroare corespunzător.

Cod PHP

Include_once „text.php”; // fișierul text.php va fi inclus o singură dată

// reconectare de mai jos nu vor fi luate în considerare și afișate
// și nu va cauza afișarea unui mesaj de eroare
include_once "text.php"; // nu se va întâmpla nimic

cere și cere_o dată

Instrucțiunile require și require_once funcționează identic pentru a include și include_once, cu excepția unei singure caracteristici - dacă fișierul inclus nu este găsit, execuția scriptului va fi oprită (scriptul nu va mai fi citit), în timp ce include și include_once afișează pur și simplu un avertisment și continuați execuția scriptului.

Dacă include sau cere nu funcționează

Pentru a înțelege motivele pentru care include nu funcționează, vă sugerez să verificați totul pas cu pas. Oricât de clare și superficiale ar fi punctele de mai jos, verifică totul de la bun început

1. Verificați dacă serverul și php funcționează, dacă vreuna dintre ele funcționează cod php Pe net
2. Verificați dacă fișierul include există
3. Verificați dacă numele și extensia fișierului sunt introduse corect în conexiune
4. Asigurați-vă că fișierul php inclus se află de fapt la adresa pe care ați specificat-o
5. Încercați să nu specificați cale relativă, dar absolut (calea completă către fișier).

Exemplu Cod PHP

Includeți „http://www.example.com/include/your_file.php”;

// DOCUMENT_ROOT - indică directorul rădăcină al resursei
include $_SERVER["DOCUMENT_ROOT"]."/include/your_file.php";

6. Dacă fișierul dvs. nu se conectează și nu este afișată nicio eroare, atunci în directorul cu fișierul pe care îl conectați, creați un fișier .htaccess cu următorul conținut

Php_flag display_errors Activat
sau în fișierul php, înainte de conectare, lipiți următorul rând

Raportare_eroare(E_ALL);
Ambele setări vor forța afișarea erorilor

Când dezvoltați orice site web și orice complexitate, trebuie în primul rând să vă concentrați pe corectitudinea codului. De exemplu, dacă creați tot codul cu numeroase fișiere pe o singură pagină, va duce la confuzie și la mare inconvenient. Și pentru a face acest lucru, trebuie să organizați fișierele în categorii și apoi să le conectați la codul principal în locurile potrivite. Această metodă poate fi numită fișiere incluse. Acesta este un nume destul de simplu, dar pentru o persoană care întâlnește acest subiect pentru prima dată, poate fi numit așa. Și pentru a putea colecta toate fișierele incluse într-un singur cod, trebuie să aplicați ceea ce este descris în articolul anterior sau să utilizați instrucțiunile cere și cere_o dată care sunt descrise în acest text.

Instructiuni practice cere și cere_o datăîndeplini aceleași funcții ca și instrucțiunile include și include_once, cu excepția unor puncte.

Sintaxa acestor instrucțiuni este:

Require_once 'config.php'; - fișier de setări
require_once 'header.php'; - antetul site-ului
necesită „left.php”; - bara laterală din stânga
necesită „content.php”; — conținutul site-ului
necesită „footer.php”; - subsolul site-ului

Și diferența este aceasta. La procesarea codului, PHP convertește mai întâi scriptul într-o reprezentare internă, după care începe procesarea codului linie cu linie. Și dacă PHP găsește un fișier în codul care este inclus de instrucțiune include, apoi după încărcarea fișierului trece complet la execuția acestuia, convertește fișierul într-o reprezentare internă și abia apoi îl execută pas cu pas...

Iată instrucțiunile cere functioneaza putin diferit. Fișierul conectat cu ajutorul său este tradus înainte ca scriptul să fie executat, cu alte cuvinte, în momentul procesării întregului cod, acest fișier a fost deja tradus!!! Și de aici concluzia - fișiere conectate prin instrucțiuni cere- va funcționa mai repede. Și pentru mine, de exemplu, această instrucțiune de preferat. Dar, desigur, există un DAR! Când browserul încarcă o pagină, internetul se poate bloca și utilizatorul poate vedea doar acea parte a paginii care s-a încărcat deja. Sau dacă există un fel de eșec de procesare, procesarea nu va continua dincolo de fișierul înghețat. Dar acest lucru se întâmplă rar pe un site web, așa că această instrucțiune este încă de preferat.

Aproape am uitat. Instrucțiuni cere_o dată- de asemenea are rolul de a include un fișier în codul general o singură dată, astfel încât să nu existe repetări.

Acesta este aproape tot ce trebuie să știți despre cum să conectați fișierele la fluxul general de scriere a codului. Cunoașterea mai profundă vine de obicei prin procesul de învățare și în funcție de nevoi, ceea ce în mod firesc nu le pot prevedea. Vă mulțumim pentru atenție și îmi pare rău pentru prezentarea acestor subiecte de către autor.

martie 2019
Lun W mier joi vineri sat Soare
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

PUBLICITATE

    Declarația include în PHP, instrucțiunea include_once în php, fișierele incluse. Când dezvoltați un site web dinamic simplu, sau programe mai avansate, este imposibil

    Structura motorului site-ului, în ce constă motorul site-ului, panoul de control al site-ului, motorul șablonului. În articolul precedent s-a descris că

    Ce este un motor de site, cum se creează un motor de site, un sistem de gestionare a site-ului web în PHP. Pentru a înțelege ce este