Adakah yang tahu apa yang bisa menyebabkan masalah ini?
Kesalahan PHP fatal: Tidak dapat mendeklarasikan ulang kelas
php
class
fatal-error
Jin Yong
sumber
sumber
if(!class_exists('YourClass')){ include 'YourClass.php'; }
Jawaban:
Itu berarti Anda sudah membuat kelas.
Misalnya:
Foo kedua akan melempar kesalahan.
sumber
Anda memiliki kelas dengan nama yang sama dinyatakan lebih dari sekali. Mungkin melalui beberapa termasuk. Saat menyertakan file lain, Anda perlu menggunakan sesuatu seperti
untuk mencegah beberapa inklusi. Sangat mudah untuk ini terjadi, meskipun tidak selalu jelas, karena Anda bisa memiliki rantai panjang file yang dimasukkan satu sama lain.
sumber
Itu terjadi ketika Anda mendeklarasikan suatu kelas lebih dari sekali dalam satu halaman. Anda dapat memperbaikinya dengan membungkus kelas itu dengan pernyataan if (seperti di bawah), atau Anda dapat meletakkannya di file yang terpisah dan digunakan
require_once()
, sebagai gantiinclude()
.sumber
class_exists('TestClass') === false
atau!class_exists('TestClass')
Gunakan
include_once();
- dengan ini, kode Anda akan dimasukkan hanya satu kali.sumber
Ini akan terjadi jika kita menggunakan salah satu kelas bawaan di perpustakaan php. Saya menggunakan nama kelas sebagai Direktori dan saya mendapatkan kesalahan yang sama. Jika Anda mendapatkan kesalahan terlebih dahulu pastikan bahwa nama kelas yang Anda gunakan bukan salah satu dari kelas bawaan.
sumber
Kesalahan ini juga dapat terjadi jika Anda mendefinisikan
__construct
metode lebih dari sekali.sumber
Terkadang itu terjadi karena beberapa bug di FastCGI PHP.
Coba mulai lagi. Di Ubuntu:
sumber
Saya memiliki masalah yang sama saat menggunakan
autoload
seperti berikut:dan di kelas lain ada:
Solusinya adalah untuk menjaga kompatibilitas namespace, dalam contoh saya
namespace testClassNamespace;
di kedua file.sumber
Hanya menambahkan;
Kesalahan ini juga dapat terjadi jika Anda secara tidak sengaja memasukkan fungsi ke dalam fungsi lain.
sumber
PHP 5.3 (dan saya pikir versi yang lebih lama juga) tampaknya memiliki masalah dengan nama yang sama dalam kasus yang berbeda. Jadi saya punya masalah ini ketika kelas Login dan antarmuka mengimplementasikan LogIn. Setelah saya mengganti nama Masuk ke Log_In masalah terselesaikan.
sumber
Lakukan saja satu hal setiap kali Anda memasukkan atau memerlukan nama file yaitu class.login.php. Anda dapat memasukkannya dengan cara ini:
Dengan cara ini tidak pernah terjadi kesalahan.
sumber
Fungsi ini akan mencetak tumpukan yang memberi tahu Anda dari mana ia dipanggil:
Panggil fungsi ini di bagian atas file yang termasuk kelas Anda.
Kadang-kadang hanya akan mencetak sekali, meskipun kelas Anda dimasukkan dua kali atau lebih. Ini karena PHP benar-benar mem-parsing semua kelas tingkat atas dalam file sebelum mengeksekusi kode apa pun dan langsung melemparkan kesalahan fatal. Untuk memperbaiki ini, bungkus deklarasi kelas Anda di
if(true) { ... }
, yang akan memindahkan kelas Anda ke tingkat yang lebih rendah. Maka Anda harus mendapatkan dua jejak Anda sebelum kesalahan fatal PHP.Ini akan membantu Anda menemukan di mana kelas Anda dimasukkan dari beberapa kali dalam proyek yang kompleks.
sumber
Apakah Anda menggunakan Zend Framework? Saya mempunyai masalah yang sama juga.
Saya menyelesaikannya dengan memberi komentar pada baris berikut ini di
config/application.ini
:Saya harap ini akan membantu Anda.
sumber
Penyebab lain yang mungkin adalah kontrol sumber dan konflik yang belum terselesaikan. SVN dapat menyebabkan kelas yang sama muncul dua kali dalam file kode yang bertentangan; dua versi alternatifnya ("milikku" dan "milik mereka").
sumber
Saya telah mengalami masalah yang sama: versi php yang lebih baru tidak menangani hal yang sama dengan banyak pertikaian dari file yang sama (sebagai perpustakaan), jadi sekarang saya harus mengubah semua menyertakan saya dengan beberapa include_once.
Atau trik ini dapat membantu, jika Anda tidak memiliki terlalu banyak kelas di perpustakaan Anda ...
sumber
Saya memiliki masalah yang sama "Kesalahan PHP fatal: Tidak dapat mendeklarasikan ulang kelas XYZ.php".
Saya memiliki dua direktori seperti
controller
danmodel
dan saya mengunggahnya dengan salah XYZ.php di kedua direktori. (Jadi file dengan nama yang sama menyebabkan masalah).Solusi pertama:
Temukan di seluruh proyek Anda dan pastikan Anda hanya memiliki satu kelas XYZ.php.
Solusi kedua:
Tambahkan namespace di kelas Anda sehingga Anda dapat menggunakan nama kelas yang sama.
sumber
saya pernah mengalami masalah yang sama. menemukan kasus itu adalah nama kelas. saya mengatasinya dengan mengubah nama. karenanya menyelesaikan masalah.
sumber
Ini sebenarnya berarti kelas sudah dideklarasikan di halaman dan Anda mencoba membuatnya kembali.
Teknik sederhana adalah sebagai berikut.
Saya memecahkan masalah dengan yang berikut ini. Semoga ini sedikit membantu Anda.
sumber