Maison  >  Questions et réponses  >  le corps du texte

Comment gérer les inclusions, les exigences et l'utilisation dans ce projet

Dans ce projet PHP sans framework, j'ai cette structure de dossiers : Adaptateurs, Classes et Modèles

Le fichier php "index.php" est exécuté depuis le répertoire racine et j'ai un problème pour gérer les classes de modèle et d'adaptateur

Fichier d'index

<?php

    include('Class/Load.php');

    $connection = MysqlClass::getConnectionMysql();

Chargement des cours

<?php

    include(__DIR__ . DIRECTORY_SEPARATOR . 'MysqlClass.php');
    include(__DIR__ . DIRECTORY_SEPARATOR . 'UtilsClass.php');
    include(__DIR__ . DIRECTORY_SEPARATOR . 'EmailClass.php');

Fichier de classe MySQL

<?php

include ('UtilsClass.php');


class MysqlClass
{


    /**
     * @return PDO
     */
    public static function getConnectionMysql(): PDO
    {

        $dbhost = ReadEnvFileClass::getConfig('MYSQL_LOCAL_HOST');
        $dbuser = ReadEnvFileClass::getConfig('MYSQL_LOCAL_USER');
        $dbpass = ReadEnvFileClass::getConfig('MYSQL_LOCAL_PWD');
        $dbname = ReadEnvFileClass::getConfig('MYSQL_LOCAL_DBNAME');
        
        try {
            $dsn = "mysql:host=$dbhost;dbname=$dbname";
            $dbh = new PDO($dsn, $dbuser, $dbpass);
        } catch (PDOException $e){

            var_dump($dbhost,$dbuser,$dbpass);
            echo $e->getMessage();
        }

        return $dbh;
    }


}

Le problème réside dans le deuxième fichier MysqlClass, dois-je inclure le fichier ici dans les différentes classes dont j'ai besoin ou dois-je le faire dans le fichier index.php du fichier load.php et le charger à partir de là Toutes les classes nécessaires dans le reste du projet.

P粉652495194P粉652495194260 Il y a quelques jours320

répondre à tous(1)je répondrai

  • P粉242535777

    P粉2425357772024-02-26 13:40:45

    C'est toujours une bonne idée d'utiliser un chargeur automatique, tel que Composer.

    Tout d'abord, placez AdapterClassModels 子目录移动到 src 目录下。完全删除 Load.php.

    La structure sera :

    index.php
    composer.json
    src/Class/MysqlClass.php
    src/Class/UtilsClass.php
    src/Class/EmailClass.php
    src/Adapter/...
    src/Models/...
    

    Créez ensuite le fichier composer.json dans votre répertoire personnel :

    {
        "autoload": {
            "psr-4": {"Acme\": "src/"}
        }
    }
    

    Dans tous les fichiers de classe, mettez le bon espace de noms et supprimez tous les includerequire appels à :

    
    

    Exécutez composer install或只是composer dump-autoload,并将autoload.php文件包含在您的中index.php dans votre répertoire personnel (supprimez toutes les autres inclusions et exigences).

    
    

    Vous pouvez désormais appeler ce code de n'importe où et la classe sera chargée si nécessaire :

    use Acme/Class/MysqlClass
    
    // ...
    
    $connection = MysqlClass::getConnectionMysql();
    

    répondre
    0
  • Annulerrépondre