Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat PHP: Cuba merujuk sifat yang tidak ditentukan!

Ralat PHP: Cuba merujuk sifat yang tidak ditentukan!

PHPz
PHPzasal
2023-08-18 13:42:20802semak imbas

Ralat PHP: Cuba merujuk sifat yang tidak ditentukan!

Ralat PHP: Cuba rujuk penyelesaian harta yang tidak ditentukan!

Dalam pengaturcaraan PHP, kami sering menghadapi ralat "cuba merujuk sifat yang tidak ditentukan". Ralat ini biasanya berlaku apabila kita mengakses harta yang tidak wujud. Dalam artikel ini, saya akan memperkenalkan anda kepada beberapa punca dan penyelesaian ralat biasa, dan memberikan contoh kod yang sepadan.

1. Analisis sebab ralat

1. Atribut tidak ditentukan: Cuba akses atribut yang tidak ditentukan.
2. Ralat ejaan atribut: Nama atribut adalah salah dan atribut tidak dapat ditemui.
3. Sekatan akses harta benda: Percubaan untuk mengakses harta yang dilindungi atau persendirian tanpa menggunakan kaedah akses yang betul.
4 Atribut belum diberikan nilai: Cuba akses atribut yang belum diberikan nilai.

2. Penyelesaian dan contoh kod

1 Atribut tidak ditakrifkan:

Jika ralat "cuba merujuk atribut yang tidak ditentukan" berlaku, sebab yang paling biasa ialah kami mengakses atribut yang tidak wujud. Untuk mengelakkan ralat ini, kita harus menyemak sama ada harta itu wujud sebelum mengaksesnya.

Contoh kod:

class MyClass {
    private $name;
   
    public function __construct($name) {
        $this->name = $name;
    }
   
    public function getName() {
        return $this->name;
    }
}
 
$obj = new MyClass("John");
 
if (property_exists($obj, 'age')) { // 检查属性是否存在
    echo $obj->age; // 输出属性值
} else {
    echo "属性不存在!";
}

2. Salah ejaan atribut:

Satu lagi kesilapan biasa ialah salah mengeja nama atribut. Dalam PHP, kepekaan huruf besar-besaran adalah satu kemestian. Jika kami cuba mengakses harta yang tidak wujud, atau nama harta itu tidak konsisten dengan nama harta sebenar, ralat "Percubaan untuk merujuk harta yang tidak ditentukan" akan muncul.

Contoh kod:

class MyClass {
    private $name;
   
    public function __construct($name) {
        $this->name = $name;
    }
   
    public function getName() {
        return $this->name;
    }
}
 
$obj = new MyClass("John");
 
echo $obj->Name; // 注意属性名称的大小写

3 Sekatan akses harta:

Jika sesuatu harta diisytiharkan sebagai persendirian atau dilindungi, kami tidak boleh mengakses harta tersebut secara langsung. Kaedah capaian yang betul ialah menggunakan kaedah kelas untuk mendapatkan atau menetapkan nilai harta tersebut.

Contoh kod:

class MyClass {
    private $name;
   
    public function __construct($name) {
        $this->name = $name;
    }
   
    public function getName() {
        return $this->name;
    }
}
 
$obj = new MyClass("John");
 
echo $obj->name; // 错误访问方式
 
echo $obj->getName(); // 正确访问方式

4 Atribut belum diberikan nilai:

Jika kita cuba mengakses atribut yang belum diberikan nilai, mesej ralat "cuba merujuk atribut yang tidak ditentukan" juga akan muncul. Untuk mengelakkan ralat ini, kita harus memastikan bahawa harta itu telah ditetapkan dengan betul sebelum mengaksesnya.

Contoh kod:

class MyClass {
    private $name;
   
    public function __construct($name) {
        $this->name = $name;
    }
   
    public function getName() {
        return $this->name;
    }
}
 
$obj = new MyClass("John");
$obj->name = "Mary"; // 错误赋值方式
 
echo $obj->getName(); // 正确访问方式

Ringkasan:

Dalam pengaturcaraan PHP, ralat "cuba merujuk sifat yang tidak ditentukan" adalah ralat yang sangat biasa. Untuk mengelakkan ralat ini, kita harus menyemak sama ada atribut itu wujud sebelum mengaksesnya, perhatikan sama ada nama atribut dieja dengan betul, gunakan kaedah akses atribut yang betul dan pastikan atribut itu telah ditetapkan dengan betul. Semoga penyelesaian dan contoh kod yang disediakan dalam artikel ini akan membantu pembaca menangani masalah ini dengan lebih baik.

Atas ialah kandungan terperinci Ralat PHP: Cuba merujuk sifat yang tidak ditentukan!. 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