8768 sujets

Développement web côté serveur, CMS

Bonjour à tous

J'ai pris depuis longtemps l'habitude de commencer mes fichiers php par
$root = $_SERVER['DOCUMENT_ROOT'];

et ensuite des instructions du genre
include_once "$root/admin/footnotes/footnotes.php";


Je pourrais aussi bien écrire

declare('ROOT', $_SERVER['DOCUMENT_ROOT'];
include_once ROOT . "/admin/footnotes/footnotes.php";


A votre avis, quelle est la meilleure approche ?
c'est peut-être une troisième ?
Modifié par PapyJP (02 Jul 2019 - 15:01)
Pour moi la meilleur approche est le fait d'avoir un fichier nommer Constantes.php qui est inclut dans toutes tes pages avec que des constantes dedans
Bonne remarque mais pour appeler ce fichier j’ai besoin de son adresse, laquelle nécessite de connaître le fameux $root ou la constante ROOT pour avoir le chemin de base du site.
Je sais pas trop, moi je fais de l'orienté objet, donc j'utilise les namespaces
https://www.php.net/manual/fr/language.namespaces.rationale.php

Donc j'ai un seul fichier,

et j'ai mon
use Utils/Constantes.php


Utils étant mon dossier avec toutes mes classes utiles pour dev, dont les constantes.

Du coup il suffit que je fasse un
$cons = new Constantes(); // ou new Utils/Constantes();


Dans mon Constantes.php j'ai
Class Constante{
  const URL_PROD = "Mon url de prod" ;
}

Et ensuite j'ai mon objet $const

$const::ROOT_DOCUMENT
ou 
$const::URL_PROD 


ou d'autre constantes;

(En vrai j'ai même plus mes "Use" car je fais de l'injection de dépendance)
donc dans mes fonctions j'ai carrément

public function my_function (Constantes $const)
{
     $root = $const::ROOT_DOCUMENT;
}


voir même dans mon constructure

Class test{
    public $const;


    public function __construct(Constantes $const)
    {
          this->const = $const
    }

     public function my_function ()
     {
          $root = $this->const::ROOT_DOCUMENT;
     }
}

Modifié par JENCAL (02 Jul 2019 - 17:26)
Très intéressant mais si je voulais suivre ton exemple il faudrait restructurer le site...
Je vais y penser pour un nouveau site ou une réfection d’un site existant