请教composer psr-4加载问题

我在composer.json文件里加入

"autoload" : {
        "files" : [
            "src/app/functions.php"
        ],
        "psr-4" : {
            "App\\" : "src/app",
            "Portal\\" : "src/portal",
            "SeeKafka\\": "src/SeeKafka"
        }
    }

composer update后autoload_psr4.php文件:

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'SeeKafka\\' => array($baseDir . '/src/SeeKafka'),

然后使用:

namespace App\Api\Glp;

use SeeKafka\Lite;

class User
{
   
    public function kafka(){
        $KafKa_Lite = new Lite("127.0.0.1,localhost");
        // 设置一个Topic
        $KafKa_Lite->setTopic("glp");
        // 单次写入效率ok  写入1w条15 毫秒
        $Producer = $KafKa_Lite->newProducer();
        // 参数分别是partition,消息内容,消息key(可选)
        // partition:可以设置为KAFKA_PARTITION_UA会自动分配,比如有6个分区写入时会随机选择Partition
        $Producer->setMessage(0, "hello");
    }
报错:  
**Fatal error**: Uncaught Error: Class 'SeeKafkaLite' not found in /www/xxx/glp/src/app/Api/Glp/User.php:48 Stack trace: #0 [internal function]:
阅读 2.3k
2 个回答

卧槽,奇怪一逼

"psr-4" : {
            "App\\" : "src/app",
            "Portal\\" : "src/portal",
            "SeeKafka\\": "src/SeeKafka"
        }

改成

"psr-4" : {
            "App\\" : "src/app",
            "Portal\\" : "src/portal",
            "SeeKafka\\": "src/seekafka"
        }

就可以了 为什么目录名字不能大写?

linux系统默认区分大小写,对于php而言变量名区分大小写。最经济的做法是保持大小写一致,包括文件目录名字符串。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题