> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-4-controller/4.5-mengatasi-error-class-not-found.md).

# 4.5 Mengatasi Error Class Not Found

## Mengatasi error Class Not Found

Saat mulai menghubungkan route ke controller, ada satu error yang sangat sering muncul:

* `Target class [NamaController] does not exist`
* `Class "App\\Http\\Controllers\\NamaController" not found`

Error ini terlihat menakutkan.

Padahal, penyebabnya biasanya sederhana.

Laravel tidak tahu controller mana yang Anda maksud.

Masalah ini biasanya terjadi karena import controller di `web.php` belum ditulis, salah lokasi, atau salah penulisan huruf.

### Kenapa error ini bisa muncul

Lihat contoh route berikut:

```php
Route::resource('buku', BukuController::class);
```

Jika `BukuController` dipakai langsung seperti itu, Laravel harus tahu letak class-nya.

Karena itu, file `routes/web.php` biasanya membutuhkan baris ini:

```php
use App\Http\Controllers\BukuController;
```

Tanpa import tersebut, Laravel tidak bisa menemukan class yang dimaksud.

### Peran `namespace` dan `use`

Di dalam file controller, Anda akan melihat bagian seperti ini:

```php
namespace App\Http\Controllers;
```

`namespace` menunjukkan lokasi class tersebut di struktur proyek.

Lalu di `web.php`, Anda memakai:

```php
use App\Http\Controllers\BukuController;
```

Baris `use` ini memberi tahu Laravel class mana yang harus dipakai saat route memanggil `BukuController::class`.

Singkatnya:

* `namespace` = alamat class
* `use` = cara mengimpor class ke file lain

### Simulasi error dan cara memperbaikinya

Cara terbaik memahami error ini adalah dengan melihat langsung penyebabnya.

Gunakan urutan ini.

{% stepper %}
{% step %}

### Buka file `web.php`

Buka file:

```
routes/web.php
```

{% endstep %}

{% step %}

### Nonaktifkan import controller

Cari baris berikut:

```php
use App\Http\Controllers\BukuController;
```

Ubah sementara menjadi komentar:

```php
// use App\Http\Controllers\BukuController;
```

Lalu simpan file.
{% endstep %}

{% step %}

### Uji route di browser

Pastikan server Laravel sedang berjalan.

Lalu buka:

* `http://e-library.test/buku`
* atau `http://127.0.0.1:8000/buku`

Jika berhasil direproduksi, Laravel akan menampilkan error bahwa class controller tidak ditemukan.
{% endstep %}

{% step %}

### Aktifkan kembali import controller

Kembalikan baris import tadi menjadi:

```php
use App\Http\Controllers\BukuController;
```

Simpan file.
{% endstep %}

{% step %}

### Refresh browser

Refresh halaman yang tadi error.

Jika import sudah benar, route akan kembali normal.
{% endstep %}
{% endstepper %}

### Jalankan server saat menguji

Sebelum menguji, pastikan server Laravel sedang berjalan.

Gunakan salah satu cara berikut:

* buka **Laragon** lalu klik **Start All**
* atau jalankan `php artisan serve` dari folder proyek

Tanpa server aktif, Anda tidak bisa melihat hasil error maupun perbaikannya.

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **`Target class [BukuController] does not exist`** — import `use` belum ada atau salah
* **`Class "App\\Http\\Controllers\\BukuController" not found`** — nama class atau lokasi file controller tidak sesuai
* **import sudah ada tetapi error tetap muncul** — penulisan huruf besar dan kecil tidak konsisten
* **error muncul setelah rename file controller** — import lama belum diperbarui

{% hint style="warning" %}
Penulisan `App`, `Http`, `Controllers`, dan nama class harus konsisten. Kesalahan huruf besar dan kecil bisa terasa aman di satu komputer, tetapi gagal di lingkungan lain.
{% endhint %}

### Poin evaluasi bab 4.5

Pastikan Anda sudah memahami poin berikut:

* Saya paham bahwa error *Target class does not exist* terjadi karena file `web.php` tidak tahu lokasi folder tempat penyimpanan file Controller.
* Saya paham `namespace` menunjukkan lokasi class di dalam proyek.
* Saya tahu perintah `use` dipakai untuk mengimpor class ke file route.
* Saya paham penulisan alamat class bersifat sensitif terhadap huruf besar dan kecil.
* Saya bisa mensimulasikan error ini lalu memperbaikinya lagi.
* Saya selalu memastikan server aktif saat menguji hasil di browser.

Jika semuanya sudah jelas, lanjut ke [4.6 Checkpoint: Uji Pemahamanmu Sebelum Lanjut!](/laravel/bab-4-controller/4.6-checkpoint-uji-pemahamanmu-sebelum-lanjut.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-4-controller/4.5-mengatasi-error-class-not-found.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
