NameScape错误。停留在 'MyApp的\聊天'

NameScape错误。停留在 'MyApp的\聊天'

问题描述:

得到错误的棘轮简单的例子:NameScape错误。停留在 'MyApp的聊天'

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

我的文件结构是这样的:

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

Composer.json是

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

聊天-server.php是

<?php 
use Ratchet\Server\IoServer; 
use MyApp\Chat; 

    require dirname(__DIR__) . '/vendor/autoload.php'; 

    $server = IoServer::factory(
     new Chat(), 
     8080 
    ); 

    $server->run(); 

和Chat.php是

<?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

+0

你可以做'print_r(get_declared_classes());'并且看看它是否被加载到不同的命名空间下? –

+0

您是否尝试过使用composer dump-autoload – Maris

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

它应该是这样的:

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

And do

composer dump-autoload