Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Symfony3 Melemparkan ClassNotFoundException Selepas Menjana Himpunan?

Mengapa Symfony3 Melemparkan ClassNotFoundException Selepas Menjana Himpunan?

Mary-Kate Olsen
Lepaskan: 2024-11-22 09:31:11
asal
1019 orang telah melayarinya

Why Does Symfony3 Throw a ClassNotFoundException After Generating a Bundle?

Symfony3 ClassNotFoundException Unraveled

Seorang pengguna menemui ClassNotFoundException yang digeruni semasa memulakan projek Symfony3 baharu selepas membuat himpunan. Menyelam jauh ke dalam butiran:

  1. Projek Symfony baharu telah dimulakan dengan ArtProject baharu symfony.
  2. Himpunan baharu telah dijana menggunakan php app/console generate:bundle Paul/ArtBundle, yml , src/.

Mereka kecewa, cuba mengakses 127.0.0.1:8000 menghasilkan mesej ralat yang terkenal: "ClassNotFoundException: Cuba memuatkan kelas "PaulArtBundle" daripada ruang nama "PaulArtBundle".

Menyingkap Sebabnya

public function registerBundles()
{
    $bundles = [
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        ......
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new AppBundle\AppBundle(),
        new Paul\ArtBundle\PaulArtBundle(),
    ];
}
Salin selepas log masuk

dan PaulArtBundle ditakrifkan sebagai:

<?php

namespace Paul\ArtBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class PaulArtBundle extends Bundle
{
}
Salin selepas log masuk

Pautan Hilang Ditemui

Selepas banyak renungan, didapati bahawa arahan generate:bundle gagal mengemas kini bahagian autload composer.json, mengabaikan untuk menambah ruang nama baharu.

Resolusi

Untuk membetulkan isu tersebut, pengguna mengedit composer.json secara manual dan mengemas kini bahagian autoload:

# composer.json
"autoload": {
    "psr-4": {
        "AppBundle\": "src/AppBundle",
        "Paul\": "src/Paul"
    },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
}
Salin selepas log masuk

Melaksanakan dumpautoload komposer dan memulakan semula pelayan menyelesaikan masalah ClassNotFoundException.

Nota Tambahan

Pengguna memerhatikan bahawa berkas baharu mengatasi laluan lalai (/), maka ucapan "Hello World" yang tidak dijangka.

Menarik Insight

Sebelum Symfony 3.2, konfigurasi composer.json menganggap pemetaan PSR-4 tanpa ruang nama. Walau bagaimanapun, Symfony 3.2 memperkenalkan pendekatan yang lebih eksplisit, menyatakan ruang nama secara eksplisit. Peralihan ini mungkin telah menyumbang kepada isu ini.

Kesimpulan

Walaupun arahan generate:bundle secara sejarahnya merupakan cara mudah untuk mencipta berkas, perubahan terkini dalam konfigurasi pemuatan automatik Symfony memerlukan campur tangan manual untuk memastikan integrasi berkas yang lancar.

Atas ialah kandungan terperinci Mengapa Symfony3 Melemparkan ClassNotFoundException Selepas Menjana Himpunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan