MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Elemente fundamentale ale limbajului PHP

Includerea fișierelor externe

În dezvoltarea programelor PHP, este posibil să dorim să utilizăm anumite părți de cod în alte fișiere PHP. În acest caz, putem distribui codul în fișiere separate.

Aceasta ne permite să nu scriem același cod de mai multe ori în sute de scripturi, fiind suficient să includem fișierul cu codul PHP. În plus, dacă este necesar să modificăm comportamentul codului inclus, este suficient să modificăm codul din fișierul inclus.

PHP oferă mai multe modalități pentru includerea fișierelor.

Instrucțiunea include

Instrucțiunea include conectează în program un fișier extern cu cod PHP. De exemplu, să definim fișierul welcome.php:

<?php
function welcome($name)
{
   echo "Hello, $name";
}
?>

Aici este definită funcția welcome, care primește ca parametru un nume și îl folosește pentru a afișa un mesaj de salut.

Acum să includem acest fișier în programul nostru, care este definit într-un alt fișier în același director:

<?php
include "welcome.php";

$name = "Tom";
welcome($name);
?>

În locul unde este definită instrucțiunea include, va fi inserat întregul cod din fișierul welcome.php. Inserarea fișierului trebuie să aibă loc înainte de utilizarea funcției definite în acel fișier. În acest caz, fișierul welcome.php și fișierul în care este inclus sunt situate în același director.

Instrucțiunea include poate folosi atât căi relative, cât și absolute. De exemplu, mai sus am folosit o cale relativă. Sau, de exemplu, dacă avem următoarea structură:

  • Fișierul index.php
  • Directorul scripts
  • Fișierul welcome.php

Pentru a include fișierul welcome.php din directorul scripts în fișierul index.php, trebuie să folosim următoarea cale relativă:

include "scripts/welcome.php";

Dacă fișierul welcome.php este situat la calea completă C:\localhost\scripts\welcome.php, putem folosi și o cale absolută:

include "C:\localhost\scripts\welcome.php";

Instrucțiunea include_once

Utilizarea instrucțiunii include are dezavantaje. De exemplu, putem include din greșeală același fișier de mai multe ori în diferite locuri din cod, ceea ce va provoca erori la rularea codului.

Pentru a evita includerea repetată a fișierului, în loc de include ar trebui să folosim instrucțiunea include_once:

<?php
include_once "welcome.php";

$name = "Sam";
welcome($name);
?>

Și acum, dacă includem același fișier cu ajutorul include_once încă o dată mai jos, această includere va fi ignorată, deoarece fișierul a fost deja inclus în program.

Instrucțiunile require și require_once

Instrucțiunea require funcționează similar cu include: include un fișier extern, inserând conținutul acestuia în program. Totuși, dacă fișierul nu este găsit, execuția programului se va opri (instrucțiunea include în acest caz aruncă doar un avertisment):

<?php
require "welcome.php";
?>

De asemenea, dacă în cod întâlnim mai multe instrucțiuni require care includ același fișier, interpretul va genera o eroare. Pentru a evita această situație, ar trebui să folosim instrucțiunea require_once:

<?php
require_once "welcome.php";
?>

Funcția spl_autoload_register.

În aplicațiile mari, numărul fișierelor incluse poate fi destul de mare. Totuși, funcția încorporată spl_autoload_register() în anumite situații permite evitarea unui număr mare de include-uri. Această funcție acceptă ca parametru o funcție de autoload.

Această funcție este apelată automat atunci când în program începe să fie utilizată o clasă sau un interfață necunoscută. Funcția de autoload încearcă să încarce această clasă sau interfață. Ca parametru, funcția de autoload primește numele clasei sau interfeței care trebuie încărcată.

De exemplu, să presupunem că avem fișierul Person.php, care conține clasa Person:

<?php
class Person
{
   private $name, $age;
   function __construct($name, $age)
   {
       $this->name = $name;
       $this->age = $age;
   }
   function printInfo()
   {
       echo "Name: $this->name<br>Age: $this->age";
   }
}
?>

Observați că numele fișierului corespunde numelui clasei.

Utilizăm funcția de autoload pentru a include această clasă:

<?php
function my_autoloader($class) {
   echo "Apel funcție de autoload<br>";
   include $class . ".php";
}

spl_autoload_register("my_autoloader");

$tom = new Person("Tom", 25);
$tom->printInfo();
?>

Funcția spl_autoload_register() acceptă ca parametru numele funcției de autoload - în acest caz, este funcția my_autoloader(). Ca parametru, aceasta primește numele clasei. De exemplu, în acest caz, este utilizată clasa Person, care nu este definită în acest script.

Când programul întâlnește utilizarea acestei clase, va apela funcția my_autoloader(), iar ca parametru $class îi va transmite numele clasei Person.

Toate acțiunile funcției de autoload sunt definite de noi. În acest caz, folosind echo, afișăm un mesaj de diagnostic și includem fișierul clasei:

include $class . ".php";

În acest caz, nu contează ce clasă este, principalul este să fie stocată într-un fișier cu același nume și extensia .php. Programul va afișa următoarele:

Apel funcție de autoload
Name: Tom
Age: 25
← Lecția anterioară Lecția următoare →