kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 JasonDavis
JasonDavis
Question

Tidak dapat menemukan Kelas dengan Namespace PHP

Saya memposting beberapa pertanyaan sebelumnya mengenai penggunaan Namespaces di PHP dan dari apa yang saya dapatkan, contoh kode yang saya miliki di bawah ini seharusnya bekerja.

Namun saya mendapatkan error ketika saya mencoba menggunakan Namespace di PHP seperti ini. Berikut adalah kesalahan pertama ketika menjalankan kode di bawah ini...

Fatal error: Class 'Controller' not found in E:\Controllers\testing.php on line 6

E:\Controller\testing.php File

<?php
use \Controller;

include('testcontroller.php');

$controller = new Controller;
$controller->show();
?>

E:\Controller\testcontroller.php File

<?php
use \Library\Registry;

namespace Controller
{
    class Controller
    {
        public $registry;

        function __construct()
        {
            include('E:\Library\Registry.class.php');
            $this->registry = new Registry;
        }

        function show()
        {
            echo $this->registry;
            echo '<br>Registry was ran inside testcontroller.php<br>';
        }
    }
}
?>

E:\Library\Registry.class.php File

<?php
namespace Library\Registry
{
    class Registry
    {
        function __construct()
        {
            return 'Registry.class.php Constructor was ran';
        }
    }
}
?>

Seperti yang Anda lihat, saya mencoba membuatnya sesederhana mungkin hanya untuk membuat bagian Namespace bekerja. Saya telah mencoba variasi yang berbeda dan sepertinya tidak dapat mengetahuinya.

26 2011-12-22T23:10:06+00:00 3
Pemrograman
namespaces
php
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Dan Soap
Dan Soap
22 Desember 2011 в 11:16
2011-12-22T23:16:59+00:00
Lebih
Sumber
Sunting
#15037717

Ketika Anda meletakkan kelas Controller di namespace Controller, maka Anda harus mereferensikannya seperti itu:

$controller = new Controller\Controller();

\Controller akan menjadi kelas di namespace global (default), yaitu seolah-olah Anda tidak menggunakan namespace sama sekali.

6
0
 JasonDavis
JasonDavis
23 Desember 2011 в 12:22
2011-12-23T00:22:39+00:00
Lebih
Sumber
Sunting
#15037719

Anehnya saya menemukan bahwa dalam contoh kode saya dari Pertanyaan di atas, jika saya mengubah semua Namespace's yang didefinisikan menjadi sesuatu seperti MyLibrary sehingga akan menjadi seperti kode di bawah ini ...

E:\Library\Registry.class.php File

<?php
namespace MyLibrary
{
    class Registry
    {
        function __construct()
        {
            echo 'Registry.class.php Constructor was ran';
        }
    }
}
?>

Kemudian ketika saya menggunakan use MyLibrary\Registry; di file lain, saya dapat mengaksesnya seperti yang saya rencanakan ...

$this->registry = new Registry;

Alasan mengapa hal ini sangat aneh bagi saya adalah ini sekarang membuat nama kelas tampak seperti Namespace juga. Jadi saya tidak perlu mengatur Namespace menjadi 'MyLibrary\Library' untuk mengakses Registry sebagai gantinya saya akan melakukannya seperti yang saya tunjukkan dalam jawaban ini untuk dapat mengaksesnya hanya dengan memanggil nama kelas.

Saya harap ini masuk akal dan membantu orang lain. Saya tidak akan menerima ini sebagai jawaban karena saya berharap seseorang dengan pengetahuan yang lebih banyak akan datang dan memposting Jawaban yang lebih baik dengan penjelasan

2
0
 Ascherer
Ascherer
22 Desember 2011 в 11:18
2011-12-22T23:18:13+00:00
Lebih
Sumber
Sunting
#15037718

coba

<?php
use \Library\Registry;

namespace Controller;
class Controller
{
    public $registry;
    function __construct()
    {
        include('E:\Library\Registry.class.php');
        $this->registry = new Registry;
    }
    function show()
    {
        echo $this->registry;
        echo '<br>Registry was ran inside testcontroller.php<br>';
    }
}
?>

dan

<?php
namespace Library\Registry;
class Registry
{
    function __construct()
    {
        return 'Registry.class.php Constructor was ran';
    }
}
?>
1
0
Related communities 5
Telegram Bot PHP - Indonesia
Telegram Bot PHP - Indonesia
9 898 pengguna
Pengen tau ada bot apa aja? Cek @botkoleksi Grup diskusi tentang pembuatan bot telegram menggunakan bahasa pemrograman PHP. Bahasa Lain, Tetap welcome. Diskusi bot lainnya @botIndonesia Ngobrol bebas di @indonesiabicara
Buka telegram
PHP Indonesia Community
PHP Indonesia Community
4 077 pengguna
Grup telegram yang membahas secara khusus seputar progamming php. Sarana untuk saling berkomunikasi, berbagi tips dan trik, tutorial, loker serta tanya jawab.
Buka telegram
Programmer PHP Indonesia
Programmer PHP Indonesia
1 249 pengguna
Buka telegram
PHP INDONESIA JOGLORAYA
PHP INDONESIA JOGLORAYA
618 pengguna
PHP INDONESIA Regional Jogja - Solo Raya @phpjogloraya
Buka telegram
PHP HTML Indonesia
PHP HTML Indonesia
59 pengguna
~ Menerima Jasa Pembuatan Website untuk : Tugas & Instansi 💻 ~ Forum Diskusi Belajar Bersama ✅ ~ Promosi Jasa Minimal 1x Sehari ✅ ~ Dilarang Berbicara Kotor 🚫 ^ Other Grup : Whatsapp Group : Chat Admin untuk masuk ke Grup Whatsapp ^^
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
工藤 芳則
Terdaftar 6 hari yang lalu
2
Ирина Беляева
Terdaftar 1 minggu yang lalu
3
Darya Arsenyeva
Terdaftar 1 minggu yang lalu
4
anyta nuam-nuam (LapuSiK)
Terdaftar 1 minggu yang lalu
5
Shuhratjon Imomkulov
Terdaftar 1 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi