Rumah > pembangunan bahagian belakang > tutorial php > Selesaikan masalah ralat PHP: kebenaran akses atribut tidak ditentukan

Selesaikan masalah ralat PHP: kebenaran akses atribut tidak ditentukan

王林
Lepaskan: 2023-08-17 08:22:02
asal
928 orang telah melayarinya

Selesaikan masalah ralat PHP: kebenaran akses atribut tidak ditentukan

Selesaikan ralat PHP: masalah kebenaran akses atribut tidak ditentukan

Semasa proses pembangunan menggunakan PHP, kami sering menghadapi laporan ralat. Salah satu ralat biasa ialah "akses hartanah tidak ditentukan". Ralat ini secara amnya bermakna apabila mengakses harta objek kelas, harta itu tidak ditentukan atau kebenaran akses tidak ditetapkan. Artikel ini akan menganalisis masalah ini dan memberikan penyelesaian.

Pertama sekali, kita perlu memahami kebenaran akses atribut dalam PHP. Dalam PHP, sifat boleh ditetapkan kepada awam, dilindungi atau peribadi. awam mewakili harta awam dan boleh diakses dari mana-mana sahaja yang dilindungi mewakili harta yang dilindungi dan hanya boleh diakses dalam kelas dan subkelas mewakili harta peribadi dan hanya boleh diakses dalam kelas. Jika kami tidak menetapkan kebenaran akses yang betul semasa mengakses sifat, PHP akan melaporkan ralat.

Jadi, mari gunakan kod sampel untuk menunjukkan cara menyelesaikan masalah ini.

class Person {
    private $name;
    protected $age;
    public $gender;

    public function __construct($name, $age, $gender) {
        $this->name = $name;
        $this->age = $age;
        $this->gender = $gender;
    }

    public function getName() {
        return $this->name;
    }

    public function getAge() {
        return $this->age;
    }

    public function getGender() {
        return $this->gender;
    }
}

$person = new Person("John", 25, "Male");
echo $person->name; // 这里会报错:未定义属性访问权限
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas Orang, yang mempunyai tiga atribut: nama, umur dan jantina. Antaranya, atribut nama ialah atribut peribadi, atribut umur ialah atribut yang dilindungi, dan atribut jantina ialah atribut awam. Kami berharap apabila atribut nama diakses secara luaran, ralat akan dilaporkan.

Untuk menyelesaikan masalah ini, kita perlu mendapatkan nilai atribut nama melalui kaedah kelas dan bukannya mengakses atribut secara terus.

Berikut ialah kod yang diubah suai:

class Person {
    private $name;
    protected $age;
    public $gender;

    public function __construct($name, $age, $gender) {
        $this->name = $name;
        $this->age = $age;
        $this->gender = $gender;
    }

    public function getName() {
        return $this->name;
    }

    public function getAge() {
        return $this->age;
    }

    public function getGender() {
        return $this->gender;
    }
}

$person = new Person("John", 25, "Male");
echo $person->getName(); // 输出:John
Salin selepas log masuk

Dalam kod yang diubah suai, kami telah menambah kaedah getName() untuk mendapatkan nilai atribut nama. Apabila mengakses atribut nama secara luaran, kami menggunakan kaedah ini untuk mendapatkan nilai atribut, dengan itu mengelakkan ralat.

Melalui contoh ini, kita dapat melihat bahawa apabila mengakses sifat kelas, kita harus memberi keutamaan untuk menggunakan kaedah kelas untuk mendapatkan nilai harta itu daripada mengakses harta itu secara langsung. Ini memastikan ketepatan dan keselamatan akses atribut.

Ringkasnya, cara untuk menyelesaikan masalah kebenaran akses atribut yang tidak ditentukan yang dilaporkan oleh PHP adalah dengan mendapatkan nilai atribut melalui kaedah kelas dan bukannya mengakses atribut secara langsung. Kita harus membangunkan tabiat pengaturcaraan yang baik dan mengikut prinsip berorientasikan objek untuk memastikan keteguhan dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Selesaikan masalah ralat PHP: kebenaran akses atribut 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