在這個沒有框架的 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粉2425357772024-02-26 13:40:45
使用自動載入器總是一個好主意,例如 作曲家。
首先,將 Adapter
、Class
和 Models
子目錄移到 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/"} } }
在所有類別檔案中,放置正確的命名空間並刪除所有 include
和 require
呼叫:
在主目錄中運行
composer install
或只是composer dump-autoload
,並將autoload.php
檔案包含在您的中index .php
(刪除所有其他包含和要求)。現在您可以從任何地方呼叫此程式碼,如果需要,該類別將被載入:
use Acme/Class/MysqlClass // ... $connection = MysqlClass::getConnectionMysql();回覆0