2016-12-09 223 views
0

我正在学习所有关于PHP中的命名空间,但我没有弄清楚我在做什么错误?PHP致命错误:未捕获错误:类'Acme RegisterUser'未找到

这里是我的目录结构:

/review 
├── index.php 
├── RegisterUser.php 
└── AuthController.php 

的index.php

<?php 
$registration = new Acme\RegisterUser; 

$authController = new Acme\AuthController($registration); 

$authController->register(); 

RegisterUser.php

<?php namespace Acme; 

class RegisterUser 
{ 
    public function execute(array $data, $listener) 
    { 
     var_dump('registering the user'); 

     $listener->userRegisteredSuccessfully(); 
    } 
} 

AuthController.php

<?php namespace Acme; 

    class AuthController { 

     protected $registration; 

     public function __construct(RegisterUser $registration, $listener) { 
      $this->registration = $registration; 
     } 

     public function register() { 
      $this->registration->execute([], $this); 
     } 

     public function userRegisteredSuccessfully() { 
      var_dump('created successsfully. redirect somewhere'); 
     } 

     public function userRegisteredFailed() { 
      var_dump('created unsuccessfully. redirect back'); 
     } 

    } 

我在做什么错?

我使用的PHP版本PHP 7.1.0RC6 (cli) (built: Nov 9 2016 04:45:59) (NTS)

错误:

> $ php index.php                      [±master ●] 
PHP Fatal error: Uncaught Error: Class 'Acme\RegisterUser' not found in /Users/dan/Desktop/oop/src/review/index.php:2 
Stack trace: 
#0 {main} 
    thrown in /Users/dan/Desktop/oop/src/review/index.php on line 2 

Fatal error: Uncaught Error: Class 'Acme\RegisterUser' not found in /Users/dan/Desktop/oop/src/review/index.php:2 
Stack trace: 
#0 {main} 
    thrown in /Users/dan/Desktop/oop/src/review/index.php on line 2 
+0

如果您在完全限定的类名之前加上斜线(例如:new \ Acme \ RegisterUser),会发生什么情况? –

+0

你如何包含包含这些类的文件?手动?自动加载磁带机? – Clive

+0

您需要加载相应的类:http://php.net/manual/en/language.oop5.autoload.php –

回答

2

你必须首先包括那些类,无论是自动加载或手动。

+0

这就是我的想法,但我问的原因是因为我沿着拉拉斯科斯,他们没有这条线,所以我想知道他是如何做的。谢谢。 – nn2

相关问题