【发布时间】:2018-12-25 19:35:41
【问题描述】:
我有一个这样的文件夹结构的 php 应用程序
-/app
-/vendor
-index.php
我的“vendor/autoload.php”文件包含在“index.php”文件中。当我在“index.php”文件中从供应商那里调用一个类时,例如 upload() 加载它没有问题。但是,如果我从“app”文件夹内的类中调用同一个类,则会显示类未找到错误。
“app”文件夹中的类会像这样自动加载
"autoload": {
"psr-4":{
"App\\": "app/"
}
},
"require": {
"verot/class.upload.php": "dev-master"
}
如何从 app 文件夹中自动加载的类中的供应商文件夹中调用类?
编辑:
app 文件夹中的类在“index.php”中被调用,像这样
include("vendor/autoload.php");
$get_class = 'User';
require_once('app/'.$get_class.'.php');
$get_class = 'App\\'.str_replace('/', '\\', $class_name);
if(method_exists($get_class , 'uploadImage')) {
$class = new $get_class();
$class->{ 'uploadImage' }();
}
这是 User 类中调用的 upload() 类
namespace App\User;
class User{
public function uploadImage()
{
$file = 'user.jpg';
$handle = new upload($file);
}
}
这是错误信息
Class 'App\upload' not found in app/User.php:20
【问题讨论】:
-
当我们看不到这些类在哪里被调用时,很难找到问题所在。能给我们举个例子吗?
-
它可以是很多东西。请向我们展示有效的代码和无效的代码。您还应该包含实际的错误消息。
-
我已经添加了类的调用方式和错误信息
-
这不是你打电话的地方,但实际上打电话给
upload()。这似乎是一些奇怪的通用代码。我不知道这里发生了什么。 -
我进一步更新了代码以使其更清晰
标签: php composer-php