2016-12-09 16 views
0

で働いていないので、私は私のindex.phpファイルに次き:PHPの自動ロードは、このオンラインチュートリアル以下の私はsymfonyのイベントディスパッチャクラスをチェックアウトしようとしていますし、私がされているsymfonyのディスパッチャ例

<?php 


require('vendor/autoload.php'); 

use Symfony\Component\EventDispatcher\Event; 
use Symfony\Component\EventDispatcher\EventDispatcher; 

$dispatcher = new EventDispatcher; 

$dispatcher->addListener('UserSignedUp' , function(Event $event){ 
    // die('Handling It !!'); 

    var_dump($event); 

}); 

$event = new App\Events\UserSignedUp((object) [ 'name' => 'gautam' , 'email' => '[email protected]' ]); 


$dispatcher->dispatch('UserSignedUp' , $event); 

{ 
    "require": { 
     "symfony/event-dispatcher": "^3.2" 
    }, 

    "autoload" : { 
     "psr-4" : { 
      "App\\" : "app/" 
     } 
    } 

} 
:私は私のcomposer.jsonファイルに次の持つ

event_dis 
    - app 
     - events 
     - UserSignUp.php 
    - vendor 
    - index.php 
    - composer.json 

:私は、次のディレクトリ構造を持っています

UserSignedUp.phpクラスは、次のようになります。

$event = new App\Events\UserSignedUp((object) [ 'name' => 'gautam' , 'email' => '[email protected]' ]); 

UserSignedUpクラスが呼び出されると、私が手:私は私のindex.phpファイルに次の行を持っているので

<?php 

namespace App\Events; 


class UserSignedUp extends Event { 
    public $user; 
    public function __construct($user) { 
     $this->user = $user; 
    } 

} 

私のブラウザでエラーが発生しました:

このエラーが表示されるのは、この同じサンプルが完全に動作しているからです私のローカルマシン上のutはこれはしません、誰かが私がここで間違って何を言っているのですか?

+0

「イベント」クラスは 'のApp \ Events'名前空間に存在していますか? –

+1

app/Events/Event.phpファイルがありますか? –

答えて

2

Eventクラス名前空間には存在しません。あなたはUserSignedUp.phpを編集してuse Symfony\Component\EventDispatcher\Event;を追加する必要があります

<?php 

namespace App\Events; 

use Symfony\Component\EventDispatcher\Event; 

class UserSignedUp extends Event { 
    public $user; 
    public function __construct($user) { 
     $this->user = $user; 
    } 
} 
+0

ちょうどadditinaly質問... 'UserSignedUp.php'にEvents.phpがどのように自動ロードされていますか? –

+0

btw ..ありがとう –

+1

> "Events.phpファイルはUserSignedUp.phpにどのように自動ロードされますか?" - > autoloaderが必要な 'index.php'を呼び出した後、オートローダーを使用する '新しいApp \ Events \ UserSignedUp'を書いたので、' UserSignedUp.php'が必要です。 'extends Event'を呼び出すと、以前に含まれていたオートローダーが使用されます。それが十分に明確であるかどうかわからない、申し訳ありません –

関連する問題