Rumah pembangunan bahagian belakang tutorial php PHP OOP Bahagian-Statik harta, kaedah dan ini vs diri

PHP OOP Bahagian-Statik harta, kaedah dan ini vs diri

Jan 04, 2025 pm 04:36 PM

PHP OOP Part-Static property, method and this vs self

Dalam siri ini, saya akan membincangkan asas-asas Pengaturcaraan Berorientasikan Objek PHP (OOP). Kandungan akan disusun mengikut bahagian berurutan, setiap satu memfokuskan pada topik tertentu. Jika anda seorang pemula atau tidak biasa dengan konsep OOP, siri ini direka bentuk untuk membimbing anda langkah demi langkah. Dalam bahagian ini, saya akan membincangkan tentang sifat statik, kaedah dan ini vs diri dalam PHP. Mari kita mulakan perjalanan belajar PHP OOP bersama-sama!

Apakah harta dan kaedah?

Pertama, mari kita cuba memahami sifat dan kaedah. Apabila kita mencipta berbilang objek menggunakan kelas, setiap objek diperuntukkan lokasi memori yang berasingan. Akibatnya, semua sifat dan kaedah objek itu juga diperuntukkan kepada lokasi ingatan khusus tersebut.

Ini bermakna apabila kita menukar mana-mana sifat objek, perubahan itu terhad kepada objek tertentu sahaja. Ia tidak menjejaskan mana-mana objek lain kerana sifat dan kaedah kelas dikaitkan dengan objek masing-masing kelas itu.

Untuk mengakses sifat atau kaedah ini dari luar kelas, kita perlu mencipta objek kelas tersebut. Walau bagaimanapun, jika kita ingin mengakses sifat atau kaedah ini dalam kelas, kita boleh menggunakan kata kunci $this. Kata kunci $this mewakili objek semasa kelas. Kami akan mengetahui lebih lanjut tentang kata kunci $ini kemudian. Mari kita lihat contoh berikut:

Contoh Kod

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$tesla = new Car('Zip', 'Blue');
$tesla->getValue();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kita dapat melihat bahawa untuk mengakses sifat kelas, kita telah menggunakan kata kunci $this dalam kaedah kelas yang sama. Begitu juga, untuk menggunakan mana-mana kaedah kelas ini dari luar, kami telah mencipta objek kelas. Beginilah lazimnya kami menggunakan sifat atau kaedah biasa kelas.

Apakah sifat dan kaedah statik?

Walau bagaimanapun, sifat atau kaedah statik berfungsi secara berbeza. Apabila kita mentakrifkan kelas, ia diperuntukkan lokasi memori sekali sahaja. Begitu juga, apabila kita mentakrifkan sifat atau kaedah statik dalam kelas, ia juga diperuntukkan kepada lokasi memori tertentu di samping kelas itu sendiri, tetapi hanya sekali.

Akibatnya, jika kami mengubah suai mana-mana sifat atau kaedah statik kemudian, perubahan itu akan mencerminkan semua kejadian kelas. Dalam erti kata lain, di mana sahaja sifat atau kaedah statik digunakan, nilai kemas kininya akan tersedia.

Jika kita ingin mengakses sifat atau kaedah statik dari luar kelas, kita boleh menggunakan :: (pengendali resolusi skop) tanpa mencipta objek. Sebagai alternatif, kita juga boleh mengaksesnya selepas mencipta objek. Untuk mengaksesnya dari dalam kelas, kita boleh menggunakan kata kunci diri atau nama kelas itu sendiri. Di sini, kata kunci diri mewakili kelas.

Kami akan meneroka kata kunci diri dengan lebih terperinci kemudian. Mari kita lihat contoh berikut:

Contoh Kod

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$tesla = new Car('Zip', 'Blue');
$tesla->getValue();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kita dapat melihat bahawa untuk mengakses sifat statik kelas, kita telah menggunakan kata kunci diri dalam kaedah kelas yang sama. Selain itu, untuk menggunakan kaedah statik dari luar kelas, kami mencipta objek kelas. Walau bagaimanapun, kami juga boleh mengaksesnya secara terus menggunakan nama kelas bersama-sama dengan :: (pengendali resolusi skop), tanpa membuat objek. Beginilah lazimnya kami menggunakan sifat statik atau kaedah kelas.

Dalam contoh di atas, kita dapat melihat bahawa menggunakan kelas Kereta, kita mencipta dua objek, $toyota dan $bmw, dengan data yang berbeza. Sekarang kita mahu mengakses nilai objek ini. Jika kita menjalankan kod di atas, kita akan melihat output berikut:

Contoh Kod

class Car
{
   public static $name;
   public static $color;

   function __construct($name, $color)
   {
      self::$name = $name;
      self::$color = $color;
   }

   public static function getValue()
   {
      echo "Car name: " . self::$name . "\n";
      echo "Car color: " . self::$color . "\n";
   }
}

$toyota = new Car('Toyota', 'Black');
$bmw = new Car('BMW', 'Orange');

$toyota::getValue();
$bmw::getValue();

Car::getValue();
Salin selepas log masuk
Salin selepas log masuk

Kita dapat melihat bahawa kedua-dua objek menunjukkan nilai yang sama. Dalam erti kata lain, nilai yang kami peroleh adalah daripada objek yang paling baru dibuat. Walaupun apabila kami cuba mengakses nilai secara terus melalui kelas, kami masih mendapat nilai yang sama, iaitu, nilai objek kedua.

Alasan untuk ini agak jelas. Seperti yang dinyatakan sebelum ini, sifat atau kaedah statik dicipta dalam satu lokasi memori. Jika sifat atau kaedah statik ditukar dari mana-mana sahaja, perubahan itu mempengaruhi semua kejadian kelas.

Dalam contoh di atas, apabila kita mencipta objek kedua, nilai sifat berubah sebaik sahaja objek itu dicipta. Perubahan ini turut mempengaruhi objek yang dibuat sebelum ini kerana semua objek kelas berkongsi sifat atau kaedah statik yang sama.

Adalah penting untuk diingat bahawa sifat statik atau kaedah kelas tidak boleh digunakan dengan cara yang sama seperti sifat atau kaedah kelas biasa. Anda tidak boleh menggunakan operator → untuk mengaksesnya. Sebaliknya, anda mesti menggunakan ::(operator resolusi skop), sama ada anda mengaksesnya dari dalam atau luar kelas.

Kata kunci $this vs self

Apakah $ini?

Kami telah pun melihat penggunaan kata kunci $this dan self. Sekarang, mari kita mendalami konsep ini untuk lebih memahaminya.

$ini ialah kata kunci PHP terbina dalam. Apabila kita mencipta satu atau lebih objek menggunakan kelas, sifat dan kaedah biasa yang ditakrifkan dalam kelas boleh diakses menggunakan kata kunci $this dari dalam kelas.

Sekarang, kita tahu bahawa apabila kelas ditakrifkan, ia diperuntukkan kepada lokasi memori tertentu sekali sahaja. Ini mungkin menimbulkan persoalan: jika kita mencipta berbilang objek daripada kelas ini, adakah kata kunci $this akan mengakses sifat atau kaedah sekali sahaja untuk semua objek?

Jawapannya ialah "Tidak". Ini kerana, seperti yang telah kita bincangkan, kata kunci $this tidak mewakili kelas itu sendiri sebaliknya objek yang dicipta oleh kelas tersebut. Dalam erti kata lain, $ini berkaitan secara langsung dengan objek. Akibatnya, untuk setiap objek yang dicipta, kata kunci $this akan mengakses sifat dan kaedah kelas secara berasingan untuk setiap objek. Mari kita lihat contoh berikut:

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$tesla = new Car('Zip', 'Blue');
$tesla->getValue();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh sebelumnya, kami telah menggunakannya beberapa kali, tetapi penggunaan $this tidak dibincangkan secara terperinci. Sekarang setelah kita mendapat sedikit pemahaman tentang $ini, kita boleh memahami penggunaannya dengan lebih baik. Menggunakan kelas ini, kami telah mencipta objek. Kini, kami faham bahawa kata kunci $this mengakses sifat secara berasingan untuk setiap objek.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa kata kunci $this tidak boleh digunakan dalam kaedah statik. Mengapa ia tidak boleh digunakan akan diterangkan sebentar lagi.

Apakah kata kunci diri?

Kita sudah tahu bahawa apabila kelas ditakrifkan, ia diperuntukkan kepada lokasi memori sekali sahaja. Begitu juga, semua sifat statik dan kaedah dalam kelas itu juga diperuntukkan kepada lokasi memori bersama-sama dengan kelas, sekali sahaja.

Akibatnya, apabila kita mencipta objek menggunakan kelas ini, sifat atau kaedah statik tidak dicipta secara berasingan untuk setiap objek. Inilah sebabnya kami tidak boleh mengakses sifat atau kaedah statik ini menggunakan kata kunci $this. Kata kunci $this mewakili objek kelas dan memandangkan sifat atau kaedah statik tidak berkaitan dengan mana-mana objek tetapi terus kepada kelas itu sendiri, kata kunci itu tidak boleh diakses menggunakan $this.

Untuk mengakses sifat atau kaedah statik dalam kelas, kami menggunakan kata kunci kendiri atau nama kelas bersama-sama dengan ::(operator resolusi skop). Ini kerana kata kunci diri mewakili kelas itu sendiri. Mari kita lihat contoh berikut:

class Car
{
   public static $name;
   public static $color;

   function __construct($name, $color)
   {
      self::$name = $name;
      self::$color = $color;
   }

   public static function getValue()
   {
      echo "Car name: " . self::$name . "\n";
      echo "Car color: " . self::$color . "\n";
   }
}

$toyota = new Car('Toyota', 'Black');
$bmw = new Car('BMW', 'Orange');

$toyota::getValue();
$bmw::getValue();

Car::getValue();
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kami melihat bahawa kami boleh mengakses ahli statik dengan mudah dalam kaedah bukan statik menggunakan nama kelas atau kata kunci diri dengan pengendali resolusi ::skop, kerana ia berkaitan dengan kelas. Oleh itu, untuk mengaksesnya, kita tidak perlu mencipta objek yang berasingan.

Walau bagaimanapun, jika kami ingin mengakses ahli bukan statik dalam kaedah statik, kami perlu menggunakan kata kunci $this. Tetapi kita tahu bahawa kata kunci $this tidak boleh digunakan dalam kaedah statik kerana $ini berkaitan dengan objek, manakala ahli bukan statik tidak berkaitan dengan objek. Inilah sebabnya kami tidak boleh menggunakan kata kunci $this dalam kaedah statik.

Walau bagaimanapun, jika kita perlu mengakses ahli bukan statik dalam kaedah statik, kita boleh mencipta contoh atau objek kelas dalam kaedah statik dan kemudian menggunakan kata kunci $this untuk mengaksesnya, seperti yang ditunjukkan dalam contoh di atas .

Saya harap ini memberi anda pemahaman yang lebih jelas tentang penggunaan $this dan kata kunci diri. Itu sahaja untuk hari ini; kita sambung dalam pelajaran seterusnya.

Anda boleh berhubung dengan saya di GitHub dan Linkedin.

Atas ialah kandungan terperinci PHP OOP Bahagian-Statik harta, kaedah dan ini vs diri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1675
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Apr 17, 2025 am 12:06 AM

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Apr 17, 2025 am 12:25 AM

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP dan Python: Contoh dan perbandingan kod PHP dan Python: Contoh dan perbandingan kod Apr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO) Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO) Apr 15, 2025 am 12:15 AM

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP: Pengendalian pangkalan data dan logik sisi pelayan PHP: Pengendalian pangkalan data dan logik sisi pelayan Apr 15, 2025 am 12:15 AM

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

Tujuan PHP: Membina Laman Web Dinamik Tujuan PHP: Membina Laman Web Dinamik Apr 15, 2025 am 12:18 AM

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

See all articles