代码之家  ›  专栏  ›  技术社区  ›  Champ Decay

命名空间错误。卡在“MyApp\聊天”中

  •  2
  • Champ Decay  · 技术社区  · 9 年前

    Ratchet中的获取错误简单示例:

    Fatal error: Uncaught Error: Class 'MyApp\Chat' not found

    我的文件结构如下:

    root\composer.json 
    root\bin\chat-server.php 
    root\src\MyApp\Chat.php
    

    {
        "autoload": {
            "psr-0": {
                "MyApp": "src"
            }
        },
        "require": {
            "cboden/ratchet": "0.3.*"
        }
    }
    

    聊天服务器。php是

    <?php
    use Ratchet\Server\IoServer;
    use MyApp\Chat;
    
        require dirname(__DIR__) . '/vendor/autoload.php';
    
        $server = IoServer::factory(
            new Chat(),
            8080
        );
    
        $server->run();
    

    <?php
    namespace MyApp;
    use Ratchet\MessageComponentInterface;
    use Ratchet\ConnectionInterface;
    
    class Chat implements MessageComponentInterface {
        public function onOpen(ConnectionInterface $conn) {
        }
    
        public function onMessage(ConnectionInterface $from, $msg) {
        }
    
        public function onClose(ConnectionInterface $conn) {
        }
    
        public function onError(ConnectionInterface $conn, \Exception $e) {
        }
    }
    

    我试过以下方法,但现在仍然有效: PHP Fatal error: Class 'MyApp\Chat' not found in /MyApp/chat-server.php

    1 回复  |  直到 9 年前
        1
  •  3
  •   Maris    9 年前

    检查自动加载命名 https://getcomposer.org/doc/04-schema.md#psr-0

    应该是这样的:

    {
        "autoload": {
            "psr-0": {
                "MyApp\\": "src/"
            }
        },
        "require": {
            "cboden/ratchet": "0.3.*"
        }
    }
    

    composer dump-autoload