我有这样一个目录网站:
- my application
- apps
--- Backend
--- Core
---- Core \ Config
---- Core \ Drivers (Db.php)
---- Core \ Main
--- Frontend我的composer.json文件:
{
"autoload": {
"psr-4": {
"Core\\": "apps/Core/",
"Web\\": "apps/Frontend",
"Cms\\": "apps/Backend"
}
},
"require": {
"php": ">=7.0",
"phpmailer/phpmailer": "~6.0",
"monolog/monolog": "~1.23",
"mpdf/mpdf": "~7.0",
"twig/twig": "~2.5"
},
"config": {
"vendor-dir": "apps/vendor"
}
}当我想在文件中调用我的应用程序\ index.php时:
require_once ("../apps/vendor/autoload.php");
use Core\Drivers;
use Core\Main;
$bl = new Core\Drivers\Db();Db.php文件如下所示:
namespace Core\Drivers;
class Db
{
...
}我收到一个错误:
致命错误:未捕获错误:未在
为什么?
编辑
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
'Web\\' => array($baseDir . '/apps/Frontend'),
'Twig\\' => array($vendorDir . '/twig/twig/src'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
'Mpdf\\' => array($vendorDir . '/mpdf/mpdf/src'),
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
'Core\\' => array($baseDir . '/apps/Core'),
'Cms\\' => array($baseDir . '/apps/Backend'),
);发布于 2018-09-14 14:12:10
一切看起来都很酷,但我建议您将secret/index.php的内容更改为:
require_once __DIR__.'/../apps/vendor/autoload.php'; //A cleaner approach for requiring files
use Core\Drivers\Db; //So, you don't have to use slash when using your class in your code.
use Core\Main;
$bl = new Db();发布于 2018-09-14 08:40:19
使用根目录,如下所示:
use \Core\Drivers;
use \Core\Main;
$bl = new \Core\Drivers\Db();在根目录中使用php将在当前命名空间中搜索给定的类。
https://stackoverflow.com/questions/52326729
复制相似问题