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.
Adalah idea yang baik untuk menggunakan autoloader, seperti Komposer.
Pertama, tempat Adapter
、Class
和 Models
子目錄移動(dòng)到 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();