Heim  >  Fragen und Antworten  >  Hauptteil

So verwalten Sie Einschlüsse, Anforderungen und Nutzung in diesem Projekt

In diesem PHP-Projekt ohne Framework habe ich diese Ordnerstruktur: Adapter, Klassen und Modelle

Die PHP-Datei „index.php“ wird aus dem Stammverzeichnis ausgeführt und ich habe ein Problem beim Umgang mit den Modell- und Adapterklassen

Indexdatei

<?php

    include('Class/Load.php');

    $connection = MysqlClass::getConnectionMysql();

Klasse wird geladen

<?php

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

MySQL-Klassendatei

<?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;
    }


}

Das Problem liegt in der zweiten MysqlClass-Datei. Sollte ich die Datei hier in die verschiedenen Klassen einbinden, die ich benötige? Oder sollte ich dies in der index.php-Datei der Load.php-Datei tun und sie von dort laden? Alle benötigten Klassen im Rest des Projekts.

P粉652495194P粉652495194260 Tage vor319

Antworte allen(1)Ich werde antworten

  • P粉242535777

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

    使用自动加载器总是一个好主意,例如 作曲家

    首先,将 AdapterClassModels 子目录移动到 src 目录下。完全删除 Load.php

    结构将是:

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

    然后在主目录中创建composer.json文件:

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

    在所有类文件中,放置正确的命名空间并删除所有 includerequire 调用:

    
    

    在主目录中运行composer install或只是composer dump-autoload,并将autoload.php文件包含在您的中index.php(删除所有其他包含和要求)。

    
    

    现在您可以从任何地方调用此代码,如果需要,该类将被加载:

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

    Antwort
    0
  • StornierenAntwort