Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyelesaikan ralat PHP: Mencuba untuk mengakses pemalar peribadi

Menyelesaikan ralat PHP: Mencuba untuk mengakses pemalar peribadi

王林
王林asal
2023-08-19 17:24:33971semak imbas

Menyelesaikan ralat PHP: Mencuba untuk mengakses pemalar peribadi

Penyelesaian kepada ralat PHP: Mencuba mengakses pemalar peribadi

PHP, sebagai bahasa skrip sumber terbuka, mempunyai ciri yang fleksibel dan fungsi yang berkuasa Dengan aplikasinya yang mendalam, kami mungkin menghadapi beberapa ralat dan persoalan biasa. Salah satu daripadanya ialah ralat "Percubaan untuk mengakses pemalar peribadi".

Dalam PHP, pemalar ialah nilai yang tidak boleh diubah dan biasanya digunakan untuk menyimpan data yang tidak boleh diubah dalam aplikasi. Pemalar peribadi adalah sebahagian daripada kelas dan hanya boleh diakses dalam kelas dan tidak boleh diakses di luar kelas atau dalam subkelas. PHP melemparkan ralat apabila kita cuba mengakses pemalar persendirian di luar kelas atau dalam subkelas.

Jadi, bagaimana untuk menyelesaikan masalah ini? Di bawah ini kami akan menggunakan beberapa contoh kod mudah untuk menggambarkan penyelesaiannya.

Contoh Kod 1: Percubaan untuk mengakses pemalar persendirian akan mengakibatkan ralat

class MyClass {
    private const MY_PRIVATE_CONSTANT = 'Private Constant';

    public function getPrivateConstant() {
        return self::MY_PRIVATE_CONSTANT;
    }
}

$obj = new MyClass();
echo $obj->getPrivateConstant();

Dalam contoh di atas, kami menentukan kelas bernama MyClass dan menentukan pemalar persendirian di dalamnya MY_PRIVATE_CONSTANT. Kemudian, dalam kelas ini kami mencipta kaedah awam bernama <code>getPrivateConstant untuk mengembalikan nilai pemalar peribadi ini. MyClass的类,并在其中定义了一个私有的常量MY_PRIVATE_CONSTANT。然后,在该类中我们又创建了一个名为getPrivateConstant的公有方法,用于返回这个私有常量的值。

当我们尝试创建MyClass类的实例并调用getPrivateConstant方法时,PHP就会抛出一个致命错误:

Fatal error: Uncaught Error: Cannot access private const MyClass::MY_PRIVATE_CONSTANT

代码示例2:使用静态方法访问私有常量

class MyClass {
    private const MY_PRIVATE_CONSTANT = 'Private Constant';

    public static function getPrivateConstant() {
        return self::MY_PRIVATE_CONSTANT;
    }
}

echo MyClass::getPrivateConstant();

在上面的示例中,我们将getPrivateConstant方法修改为静态方法(即使没有创建类的实例,也可以通过类名::方法名的方式来直接调用)。此时,我们可以成功访问私有常量,并将其输出到屏幕上。

代码示例3:使用受保护的常量

class MyClass {
    protected const MY_PROTECTED_CONSTANT = 'Protected Constant';
}

class MyChildClass extends MyClass {
    public function getProtectedConstant() {
        return self::MY_PROTECTED_CONSTANT;
    }
}

$obj = new MyChildClass();
echo $obj->getProtectedConstant();

在上面的示例中,我们将原来的私有常量改为了受保护的常量。受保护的常量只能在类的内部和子类中访问。因此,我们创建了一个名为MyChildClass的子类,并在该子类中定义了一个名为getProtectedConstant的公有方法来访问这个受保护的常量。

当我们创建MyChildClass类的实例并调用getProtectedConstant

Apabila kita cuba mencipta contoh kelas MyClass dan memanggil kaedah getPrivateConstant, PHP melemparkan ralat maut:

rrreee

Contoh Kod 2: Akses menggunakan kaedah statik Pemalar peribadi🎜rrreee🎜Dalam contoh di atas, kami mengubah suai kaedah getPrivateConstant kepada kaedah statik (walaupun tiada contoh kelas dibuat, ia boleh dihantar Nama kelas::Nama kaedah kaedah untuk memanggil terus). Pada ketika ini, kita boleh berjaya mengakses pemalar persendirian dan mencetaknya ke skrin. 🎜🎜Contoh Kod 3: Menggunakan pemalar dilindungi🎜rrreee🎜Dalam contoh di atas, kami menukar pemalar persendirian asal kepada pemalar dilindungi. Pemalar yang dilindungi hanya boleh diakses dalam kelas dan dalam subkelas. Oleh itu, kami mencipta subkelas bernama MyChildClass dan mentakrifkan kaedah awam bernama getProtectedConstant dalam subkelas untuk mengakses pemalar dilindungi ini. 🎜🎜Apabila kami mencipta contoh kelas MyChildClass dan memanggil kaedah getProtectedConstant, kami boleh berjaya mengakses pemalar dilindungi dan mengeluarkannya ke skrin. 🎜🎜Melalui beberapa contoh kod mudah di atas, kita dapat melihat bahawa untuk menyelesaikan masalah ralat PHP "cuba mengakses pemalar peribadi", anda boleh mengubah suai cara untuk mengakses pemalar peribadi. Anda boleh menukar kaedah capaian kepada kaedah statik dan menggunakan nama kelas untuk mengakses pemalar persendirian atau menukar pemalar persendirian kepada pemalar terlindung dan mengaksesnya dalam subkelas. Dengan cara ini, kita boleh mengelakkan ralat dan berjaya mengakses dan menggunakan pemalar peribadi. 🎜

Atas ialah kandungan terperinci Menyelesaikan ralat PHP: Mencuba untuk mengakses pemalar peribadi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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