Rumah > Soal Jawab > teks badan
Dalam projek PHP tanpa rangka kerja ini, saya mempunyai struktur folder ini: Penyesuai, Kelas dan Model
Fail php "index.php" dilaksanakan daripada direktori akar dan saya menghadapi masalah mengendalikan kelas model dan penyesuai
Fail indeks
<?php include('Class/Load.php'); $connection = MysqlClass::getConnectionMysql();
Pemuatan kelas
<?php include(__DIR__ . DIRECTORY_SEPARATOR . 'MysqlClass.php'); include(__DIR__ . DIRECTORY_SEPARATOR . 'UtilsClass.php'); include(__DIR__ . DIRECTORY_SEPARATOR . 'EmailClass.php');
Fail kelas 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; } }
Soalannya adalah dalam fail MysqlClass kedua, perlukah saya memasukkan fail di sini ke dalam kelas berbeza yang saya perlukan atau adakah saya perlu melakukan ini dalam fail index.php fail load.php dan memuatkannya dari sana Semua kelas diperlukan dalam baki projek.
P粉2425357772024-02-26 13:40:45
Adalah idea yang baik untuk menggunakan autoloader, seperti Komposer.
Pertama, tempat Adapter
、Class
和 Models
子目录移动到 src
目录下。完全删除 Load.php
.
Strukturnya ialah:
index.php composer.json src/Class/MysqlClass.php src/Class/UtilsClass.php src/Class/EmailClass.php src/Adapter/... src/Models/...
Kemudian buat fail composer.json
dalam direktori rumah anda:
{ "autoload": { "psr-4": {"Acme\": "src/"} } }
Dalam semua fail kelas, letakkan ruang nama yang betul dan alih keluar semua include
和 require
panggilan ke:
Jalankan
composer install
或只是composer dump-autoload
,并将autoload.php
文件包含在您的中index.php
dalam direktori utama anda (alih keluar semua termasuk dan keperluan lain).Kini anda boleh memanggil kod ini dari mana-mana sahaja dan kelas akan dimuatkan jika perlu:
use Acme/Class/MysqlClass // ... $connection = MysqlClass::getConnectionMysql();balas0