Penyelesaian kepada Notis PHP: Harta yang tidak ditentukan:

PHPz
Lepaskan: 2023-06-23 13:52:02
asal
2379 orang telah melayarinya

Penyelesaian kepada Notis PHP: Sifat tidak ditentukan:

Apabila menggunakan PHP untuk membangunkan aplikasi web, anda sering menghadapi mesej ralat Notis PHP: Sifat tidak ditentukan:, iaitu tahap amaran biasa dalam Ralat PHP, biasanya menggesa bahawa atribut itu tidak wujud. Artikel ini akan menerangkan punca ralat ini dan cara membetulkannya.

1. Sebab ralat

Notis PHP: Harta tidak ditentukan: Ia disebabkan oleh fakta bahawa apabila mengakses nilai harta objek, harta itu tidak ditakrifkan atau tidak wujud. Contohnya:

<?php
class Person{
    public $name;
    public $age;
}
$person = new Person();
echo $person->gender; // Undefined property: Person::$gender
?>
Salin selepas log masuk

Dalam contoh di atas, kami mencipta objek kelas Orang $orang, yang mempunyai dua atribut $nama dan $umur, tetapi apabila kami cuba mengakses atribut $jantina, kami akan A Notis mesej ralat tahap muncul.

2. Penyelesaian

Untuk menyelesaikan ralat sifat Tidak ditentukan, anda perlu melakukan aspek berikut:

2.1 Semak sama ada nama pembolehubah adalah betul

Pertama sekali, kita perlu menyemak sama ada sifat objek yang dipanggil adalah betul. Sebagai contoh, kami ingin mengakses harta $gender dalam contoh di atas, tetapi sebenarnya kelas Person tidak mentakrifkan sifat ini, jadi mesej ralat "Harta tidak ditentukan: Person::$gender" akan muncul. Oleh itu, pendekatan yang betul adalah untuk melihat atribut yang telah ditakrifkan dalam kelas dan memilih nama atribut yang betul untuk diakses.

2.2 Cipta dan tentukan sifat

Jika terdapat akses kepada sifat yang tidak ditentukan, kita perlu menambah harta itu pada kelas dan menentukan nilai lalainya. Contohnya:

<?php
class Person{
    public $name;
    public $age;
    public $gender = 'unknown';
}
$person = new Person();
echo $person->gender; //输出:unknown
?>
Salin selepas log masuk

Dalam contoh ini, kami telah menambahkan atribut $gender dan menetapkan nilai lalainya kepada 'unknown', supaya ralat sifat Undefined tidak akan berlaku apabila mengakses atribut $gender.

2.3 Gunakan kaedah ajaib __get()

Kaedah ajaib __get() boleh menangkap dan mengendalikan ralat apabila cuba mengakses sifat yang tidak ditentukan. Contohnya:

<?php
class Person{
    public $name;
    public $age;
    private $properties = [];
    public function __get($property_name){
        return isset($this->properties[$property_name])?$this->properties[$property_name]:null;
    }
    public function __set($property_name, $value){
        $this->properties[$property_name] = $value;
    }
}
$person = new Person();
$person->gender = 'unknown';
echo $person->gender; //输出:unknown
?>
Salin selepas log masuk

Dalam contoh di atas, kami menambah tatasusunan $properties baharu dan mencari dalam kaedah __get() untuk melihat sama ada nama harta yang diakses wujud dalam tatasusunan dan jika ya, kembalikan harta tersebut nilai nama, jika tidak null dikembalikan. Dalam kaedah __set(), simpan nama atribut dan nilai atribut yang ditetapkan dalam tatasusunan $properties. Dengan cara ini, apabila kita cuba mengakses harta $gender objek $person, kaedah __get() secara automatik akan menangkap dan mengembalikan null, sekali gus mengelakkan ralat sifat Undefined.

Ringkasnya, kami boleh menyelesaikan Notis PHP: Undefined property: mesej ralat melalui tiga kaedah di atas. Sama ada menyemak nama pembolehubah, mencipta dan mentakrifkan sifat, atau menggunakan kaedah __get(), kita harus menulis kod dengan sikap yang teliti untuk mengelakkan ralat yang disebabkan oleh ralat ejaan atau sifat yang tidak ditentukan.

Atas ialah kandungan terperinci Penyelesaian kepada Notis PHP: Harta yang tidak ditentukan:. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan