Heim > Fragen und Antworten > Hauptteil
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粉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();Antwort0