ปกติแล้ว Laravel จะเก็บ controller ไว้ที่ไดเรคทอรี app/Http/Controllers
และกำหนด namespace เป็น
<?php
namespace App\Http\Controllers;
namespace คืออะไร? ถ้าเคยใช้งาน Java หรือ C# มันคือสิ่งเดียวกัน
คือเปรียบเหมือนกับ namespace คือ folder งาน มันจะเป็นสิ่งกำหนดว่าคลาสต่อไปนี้จะอยู่ใน folder อะไร และอยู่ตรงไหน
ข้อดีที่สุดคือเพื่อใช้แยกคลาสออกจากกัน เช่นถ้าเกิดเรา include library ของคนอื่นมาใช้แล้วบังเอิญที่มีชื่อคลาสเหมือนกัน มันก็จะชนกันใช่ไหมครับ
การกำหนด namespace จึงช่วยป้องกันไม่ให้คลาสชื่อเดียวกันชนกันนั่นเอง
และใน Laravel เขียนด้วยวิธีตาม
http://www.php-fig.org/ การกำหนด namespace จึงอิงกับชื่อ folder ครับ
และจากคำถามคือ คลาส InvalidConfirmationCodeException อยู่ที่ไหนล่ะครับ ถ้าคุณเรียกใช้คลาสนี้ใน UserController ที่อยู่ namespace App\Http\Controllers มันก็จะไม่เจอถ้าไม่ได้อยู่ namespace เดียวกัน
สมมติผมสร้างสร้าง InvalidConfirmationCodeException ไว้ที่ folder app/Exceptions ผมก็จะได้คลาสอออกมาหน้าตาแบบนี้
<?php
namespace App\Exceptions
class InvalidConfirmationCodeException extends Handle {}
ที่นี้จะ throw exception คลาสนี้ที่ UserController ที่อยู่คนละ namespace มันก็จะไม่เจอ เราเลยต้องเรียกจาก root namespace แบบนี้
<?php
...
throw new App\Exceptions\InvalidConfirmationCodeException;
ดังนั้นแล้ว Your\Exceptions\Namespace ก็คือ namespace ที่คุณกำหนดเอาไว้ที่คลาส InvalidConfirmationCodeException ดูบรรทัดบน ๆ ตรงที่เขียนว่า namespace ครับว่ามันกำหนดไว้อย่างไร