首頁  >  問答  >  主體

如何管理本項目中的包含、需求和使用

在這個沒有框架的 PHP 專案中,我有這樣的資料夾結構:適配器、類別和模型

php 檔案「index.php」從根目錄執行,我在處理模型和適配器類別時遇到問題

索引檔案

<?php

    include('Class/Load.php');

    $connection = MysqlClass::getConnectionMysql();

類別載入

<?php

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

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


}

問題是在第二個MysqlClass 檔案中,我應該在這裡將檔案包含到我需要的不同類別中,還是應該在load.php 檔案的index.php 檔案中執行此操作並從那裡加載我在專案的其餘部分中需要的所有類別。

P粉652495194P粉652495194211 天前263

全部回覆(1)我來回復

  • 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();
    

    回覆
    0
  • 取消回覆