Apakah proses operasi __set()?
葫芦娃平衡盘
葫芦娃平衡盘 2017-08-11 22:04:09
0
2
1260

kubah kelas{
peribadi $umur;
fungsi awam __bina($umur){

$ini->umur =$umur;
}
fungsi awam __set($nama,$nilai){

jika($nama =='umur')
                                                                                                                                                                                           … =25;dan
                                                                                                                                                                                                  ..,,                                                                                                                                                                                                  . umur=25 ialah 25. Umur telah diubah suai? $obj->umur=26;

葫芦娃平衡盘
葫芦娃平衡盘

membalas semua(2)
DayDayUp
class demo{
    private $age;
    public function __construct($age){
            $this->age =$age;
    }
    public function __set($name,$value){
        if($name =='age'){
            return false;
        }       
        return $this->$name=$value;
    }   
}
    $obj =new demo(24);
    echo $obj->age=25;
    $obj->age=26;
    echo $obj->age;

Dalam kod anda, gema kedua tidak seharusnya dilaksanakan Anda tidak menyiarkan keseluruhan kod, kerana ia akan menggesa anda bahawa anda tidak boleh mengakses sifat peribadi

Perbezaan antara kedua-dua hasil keluaran adalah kerana cara anda menulis. echo, echo a = 3 Cara penulisan ini akan melaksanakan pernyataan tugasan, tetapi tidak kira sama ada tugasan itu berjaya, nombor di sebelah kanan tanda sama akan dikeluarkan ke skrin

1 Gema pertama $obj-. >age=25; melaksanakan kaedah set anda, didapati bahawa nama adalah sama dengan umur, dan return false dilaksanakan, jadi nilai umur atribut tidak diubah suai. Tetapi dengan cara penulisan anda, ia akan mengeluarkan 25 di sebelah kanan tanda sama anda pada skrin

2 Cara kedua ialah cara penulisan biasa, yang akan melaksanakan pernyataan tugasan, kemudian menilai dan mengembalikan palsu , tanpa mengubah suai nilai umur, dan kemudian Output nilai atribut umur anda masih 24


  • balas Faham, terima kasih banyak-banyak
    葫芦娃平衡盘 pengarang 2017-08-12 18:18:18
DayDayUp

echo $obj->age=25 Pernyataan ini salah Anda tidak menukar nilai dalam kelas Anda hanya mengeluarkan nilai 25.

1 Perlu ada sesuatu yang salah dalam kaedah anda penyataan lain, nampaknya tiada

2 Jika anda ingin membaca atribut peribadi, anda perlu menulis kaedah dapatkan yang lain

if($name =='age')
        {return false;}  //没有else     
return $this->$name=$value;
    }   
 }
     
   //正确代码
   public function __set($name,$value){
        if($name == 'age'){
            echo 'age不允许修改';
        }else{      
            return $this->$name = $value;
        } 
    } 
    
    public function __Get($name){
            return $this->$name;
    }


Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!