PHP 5 Power Programming PDF alamat muat turun /books/28207.html
Dalam PHP4, __construct() tidak digunakan sebagai nama pembina, dan kelas mesti digunakan Namanya mentakrifkan kaedah, sama seperti dalam C++.
Dalam PHP5, kaedah penamaan pembina bersatu baharu digunakan: __construct() Sudah tentu, nama kelas juga boleh digunakan.
Walau bagaimanapun, jika anda menggunakan kedua-duanya pada masa yang sama, sistem akan menggunakan __construct() secara lalai.
Orang kelas {
//Kaedah dalam PHP4
fungsi awam Person(){
gema "Kaedah dalam PHP4";
}
//Kaedah disyorkan dalam PHP5
fungsi awam __construct(){
gema "Kaedah yang disyorkan untuk PHP5";
}
fungsi awam katakan(){
}
}
$p1=Orang baharu(
?> 🎜>
Anda tidak boleh mengembalikan nilai dalam pembina, jadi cara paling biasa untuk menjana ralat dari dalam pembina ialah membuang pengecualian.
Kod adalah seperti berikut:
Orang kelas{
peribadi $_age;
fungsi awam __build($age){
cuba {
jika ($age<120){
$this- >_age=$age ;
}else {
lemparkan Exception baharu("Umur yang anda masukkan terlalu lama"); $e->getMessage( );
}
}
}
$p1=Orang baharu(121);>
Kawalan Akses
Perlindungan akses atribut objek ialah paradigma utama OOP
Awam: boleh diakses di mana-mana
Dilindungi: ahli kelas boleh diakses daripada kaedah di dalam objek oleh subkelas dan kelas induk bagi kelas di mana mereka berada
Persendirian: Ahli kelas hanya boleh diakses melalui kaedah dalam objek kelas di mana mereka berada, tetapi tidak boleh diakses daripada ahli kelas yang diwarisi. Oleh kerana ahli persendirian tidak akan diwarisi, dua kelas berkaitan boleh mengisytiharkan pembolehubah persendirian dengan nama yang sama. Iaitu, kedua-dua kelas hanya boleh melihat harta peribadi mereka sendiri, dan tiada hubungan antara ahli persendirian.
Contoh:
Salin kod
Kod adalah seperti berikut: /*** Tentukan MyClass
*/
kelas MyClass
{
public $public = 'Public';
protected $protected = 'Protected'
private $private = ' Private';
function printHello()
{
echo $this->public
echo $this->protected; }
}
$obj = new MyClass();
echo $obj->public; // Baris ini boleh dilaksanakan seperti biasa
echo $obj->protected; akan menghasilkan ralat Fatal
echo $obj->private; // Baris ini juga akan menghasilkan ralat maut
$obj->printHello(); // Output Public, Protected and Private
/ **
* Tentukan MyClass2
*/
kelas MyClass2 memanjangkan MyClass
{
// Public dan protected boleh ditakrifkan semula, tetapi private tidak boleh
protected $protected = 'Protected2'
function printHello ( )
{
gema $ini->awam
gema $ini->dilindungi
gema $ini->peribadi; $ obj2 = new MyClass2();
echo $obj->public; // Baris ini boleh dilaksanakan secara normal
echo $obj2->private; // private is not defined
echo $obj2 -> ;protected; // Baris ini akan menghasilkan ralat maut
$obj2->printHello(); // Output Public, Protected2, tetapi bukan Private
Nota: dalam kelas Kaedah mesti ditakrifkan menggunakan kata kunci awam, dilindungi atau peribadi. Jika kata kunci ini tidak ditetapkan, kaedah akan ditetapkan kepada awam lalai.
Kaedah statik
Kaedah statik boleh dipanggil melalui nama kelas::kaedah statik tanpa mencipta tika objek, atau ia boleh dipanggil dalam contoh objek melalui kaedah $this->statik atau diri: :Kaedah statik untuk memanggil.
Salin kod
Kod adalah seperti berikut: kelas Foo
{ public static $my_static = 'foo'; public static function staticValue() { return self::$my_static;//Untuk mengakses ahli statik dalam kelas, gunakan kata kunci kendiri } }
echo $obj->staticValue();//Kaedah 1
echo Foo::staticValue();//Kaedah 2
?
Objek klon Dalam PHP4, apabila objek baharu dikembalikan, objek itu sendiri dikembalikan
Dalam PHP5, apabila objek baharu, objek yang ditunjuk akan dikembalikan. Handle"
Ini bermakna dalam PHP5, apabila memberikan contoh objek ($obj1) kepada pembolehubah lain ($obj2), kedua-dua objek menghala ke kawasan memori yang sama.
Contohnya:
php
ujian kelas{
awam $str;
}
$obj1=ujian baharu();$obj1->str="obj1"; obj1;
$obj2->str="obj2";
gema $obj1->str;//akan mengeluarkan "obj1"
?>
Sebab $obj1 dan $ obj2 menunjuk ke kawasan memori yang sama, jadi apabila mana-mana objek digunakan untuk mengubah suai nilai pembolehubah ahli, ia akan menjejaskan objek lain.
Tetapi kadangkala, kita perlu membuat salinan objek (dua kawasan memori bebas Pada masa ini, anda boleh menggunakan klon arahan bahasa
Rujuk contoh di bawah; 🎜>
Salin kod
}
$obj1=ujian baharu();
$obj1->str="obj1"; "obj2";
gema $obj1->str;//akan mengeluarkan "obj2"
?>
ibu bapa:: dan diri sendiri:
self: : menunjuk ke kelas semasa, dan biasanya digunakan untuk mengakses ahli statik, kaedah dan pemalar
induk:: menunjuk ke kelas induk, dan ia sering digunakan untuk memanggil pembina dan kaedah induk kelas, dan juga boleh digunakan untuk mengakses ahli kelas induk dan pemalar
Nota: Anda harus menggunakan induk:: bukannya nama khusus kelas induk, kerana ini membolehkan anda menukar hierarki kelas anda dengan mudah.
Contoh:
Salin kod
Kod adalah seperti berikut:
}
Anak kelas memanjangkan Bapa {
fungsi awam __construct(){
parent::__construct();//Kaedah 1
// Father::__construct();//Kaedah 2
echo "Panggil pembina subkelas";
}
}
$son=new Son();
?>
Hasil:
Panggil pembina kelas induk
Panggil pembina kaedah subkelas 1 disyorkan untuk fungsi
, atas sebab yang dinyatakan di atas.
instanceof instance
Salin kod
Kodnya adalah seperti berikut:
public $name=__CLASS__
}
class Bulatan{
public $name=__CLASS__;
}
function checkIfRectangle($shape){
if ($shape instanceof Rectangle ){
echo $shape->name; }lain {
gema "Objek ini bukan contoh kelas Rectangle";
}
}
checkIfRectangle(new Square());//Output: Square
checkIfRectangle(new Circle());/ /Output: Objek bukan contoh kelas Rectangle
?>
Nota: __CLASS__ ialah pemalar khas yang digunakan untuk menyimpan nama kelas semasa