# include_once () o require_once ()

Les versions `_once` de `include` i `require`, anomenades `include_once()` i `require_once()`, s'utilitzen per garantir que un fitxer només s'inclogui i s'executi una única vegada en un script PHP. Aquesta funcionalitat evita errors i conflictes que podrien sorgir si el mateix arxiu fos inclòs diverses vegades accidentalment.

### Per què són útils?

La principal utilitat de les variants `_once` és prevenir la **redeclaració** de classes, funcions, o constants. A PHP, si intentes definir una funció o una classe amb el mateix nom dues vegades, el script generarà un error fatal i s'aturarà.

Imagina que tens un fitxer anomenat `db.php` que conté la funció `connectar_db()` i es crida des de `pagina1.php`. Si posteriorment `pagina1.php` inclou un altre fitxer, `funcions_usuari.php`, que també crida `include 'db.php'`, la funció `connectar_db()` es definiria dues vegades, causant un error.

`require_once` resol aquest problema automàticament. Comprova un registre intern de fitxers ja inclosos i, si el fitxer ja hi és, salta la inclusió.

### Casos d'ús típics

Les versions `_once` són especialment útils en els següents escenaris:

- **Autocàrrega de classes:** En sistemes basats en classes (programació orientada a objectes), és una pràctica estàndard utilitzar `require_once` per carregar un fitxer de classe. Això assegura que una classe només es defineix una vegada, fins i tot si es fa referència a ella des de diferents parts de l'aplicació.
- **Fitxers de configuració:** Els arxius que contenen variables globals o constants (`config.php`) han de ser inclosos una sola vegada per evitar redefinir valors.
- **Llibreries de funcions:** Quan es té un fitxer amb un conjunt de funcions auxiliars, s'utilitza `require_once` per garantir que les funcions estan disponibles sense risc de conflicte.

En general, `require_once()` és la millor pràctica i l'opció més segura en la majoria de situacions, ja que combina el comportament d'error fatal de `require` amb la seguretat de no incloure un fitxer duplicat.