Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penyelesaian kepada ralat Fatal PHP: Tidak dapat mengakses harta kosong

Penyelesaian kepada ralat Fatal PHP: Tidak dapat mengakses harta kosong

PHPz
PHPzasal
2023-06-23 09:25:441414semak imbas

Dalam proses membangunkan aplikasi PHP, kadangkala kami menemui mesej ralat "PHP Fatal error: Cannot access empty property". Ralat ini biasanya disebabkan oleh sifat yang ditetapkan kepada NULL atau tidak ditentukan. Walaupun ralat jenis ini kedengaran menjengkelkan, penyelesaian untuknya sebenarnya tidak begitu sukar. Artikel ini akan memperkenalkan anda cara menyelesaikan ralat ini semasa pembangunan.

  1. Semak sama ada harta itu ditetapkan dengan betul

Dalam PHP, sifat mesti ditakrifkan dalam kelas dan ditetapkan kepada nilai yang sesuai. Jika harta ditetapkan kepada NULL atau tidak ditentukan, ralat "Tidak boleh mengakses harta kosong" dibangkitkan. Oleh itu, anda perlu menyemak sama ada kod anda menetapkan sifat yang diperlukan. Contohnya, berikut ialah sekeping kod yang salah:

Sampel kelas{

}

$sample = new Sample();
echo $sample-> name;

Dalam coretan kod di atas, kami tidak menentukan sebarang sifat dan kaedah. Oleh itu, ralat "Tidak boleh mengakses harta kosong" berlaku apabila mengakses harta yang tidak wujud. Untuk menyelesaikan ralat ini, kita harus menambah sifat dan kaedah yang diperlukan:

Sampel kelas{

public $name;

function __construct(){
    $this->name = "Sample";
}

}

$sample = new Sample();
echo $ sample ->name;

Dalam coretan kod di atas, kami menambah atribut $name awam dan memberikan nilai kepadanya dalam pembina. Kini, apabila kami mengakses harta ini, kami tidak lagi mendapat ralat.

  1. Gunakan fungsi isset() untuk menyemak sama ada harta itu telah ditetapkan

Jika harta anda mungkin ditetapkan atau tidak ditetapkan dalam peringkat aplikasi anda yang berbeza maka anda boleh Gunakan fungsi isset() untuk menyemak sama ada harta itu telah ditetapkan. Contohnya:

Contoh kelas{

public $name;

function __construct(){
    // $this->name = "Sample";
}

}

$sample = new Sample();
if(isset($sample->name)){

echo $sample->name;

} lain{

echo "属性未设置";

}

Dalam coretan kod di atas, kami telah mengalih keluar kod yang menetapkan sifat dalam pembina. Jadi apabila kami cuba mengakses harta itu, ralat "Tidak boleh mengakses harta kosong" dicetuskan. Walau bagaimanapun, kami menggunakan fungsi isset() untuk menyemak sama ada harta itu ditetapkan. Jika harta ditetapkan, maka kami mencetak nilai harta itu jika tidak, kami mencetak mesej "Hartanah tidak ditetapkan". Dengan cara ini kod akan menjadi lebih mantap.

  1. Gunakan kaedah ajaib __get() dan __set()

Jika anda ingin mengakses harta yang tidak wujud tanpa mendapat ralat "Tidak boleh mengakses harta kosong", Anda boleh menggunakan kaedah ajaib __get() dan __set() untuk mengendalikan akses dan tetapan sifat. Mereka membenarkan anda memberikan nilai secara dinamik untuk sifat kelas melalui kod.

Kaedah __get() dipanggil apabila mengakses sifat yang tidak wujud, dan kaedah __set() dipanggil apabila menetapkan sifat yang tidak wujud. Berikut ialah contoh:

Sampel kelas{

private $data = array();

public function __get($name){
    if(array_key_exists($name, $this->data)){
        return $this->data[$name];
    }

    return null;
}

public function __set($name, $value){
    $this->data[$name] = $value;
}

}

$sample = new Sample();
$sample->name = "Sample";
echo $sample->name;

Dalam coretan kod di atas, kami mentakrifkan kaedah __get() dan __set(). Kaedah __get() menyemak sama ada atribut yang diminta wujud dalam tatasusunan $data. Mengembalikan nilai atribut jika ia wujud, jika tidak NULL dikembalikan. Kaedah __set() akan menyimpan atribut dan nilai yang ditetapkan dalam tatasusunan $data. Dengan cara ini, apabila harta yang tidak wujud diakses atau ditetapkan, kaedah __get() dan __set() akan dipanggil.

Ringkasan

Semasa membangunkan aplikasi PHP, anda mungkin menghadapi ralat "Tidak boleh mengakses harta kosong". Ralat ini biasanya disebabkan oleh sifat yang ditetapkan kepada NULL atau tidak ditentukan. Untuk menyelesaikan ralat ini, anda perlu menyemak sama ada kod anda menetapkan atribut yang diperlukan, gunakan fungsi isset() untuk menyemak sama ada atribut telah ditetapkan atau gunakan kaedah ajaib __get() dan __set() untuk mengendalikan akses dan set atribut naik. Dengan mengikuti petua ini, anda akan dapat menangani ralat "Tidak dapat mengakses harta kosong" dengan lebih mudah, menjadikan kod anda lebih mantap.

Atas ialah kandungan terperinci Penyelesaian kepada ralat Fatal PHP: Tidak dapat mengakses harta kosong. 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