Rumah pembangunan bahagian belakang tutorial php PHP反射机制用法实例

PHP反射机制用法实例

Dec 23, 2016 pm 12:53 PM
mekanisme refleksi

本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用。具体方法如下:

演示示例代码如下所示:

<?php
class ClassOne {
  function callClassOne() {
    print "In Class One";
  }
}
class ClassOneDelegator {
  private $targets;
  function __construct() {
    $this->target[] = new ClassOne();
  }
  function __call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new ReflectionClass($obj);
      if ($method = $r->getMethod($name)) {
        if ($method->isPublic() && !$method->isAbstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new ClassOneDelegator();
$obj->callClassOne();
?>
Salin selepas log masuk

输出结果:

In Class One

可见,通过代理类ClassOneDelegator来代替ClassOne类来实现他的方法。

同样的,如下的代码也是能够运行的:

<?php
class ClassOne {
  function callClassOne() {
    print "In Class One";
  }
}
class ClassOneDelegator {
  private $targets;
  function addObject($obj) {
    $this->target[] = $obj;
  }
  function __call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new ReflectionClass($obj);
      if ($method = $r->getMethod($name)) {
        if ($method->isPublic() && !$method->isAbstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new ClassOneDelegator();
$obj->addObject(new ClassOne());
$obj->callClassOne();
?>
Salin selepas log masuk

希望本文所述对大家的PHP程序设计有所帮助。

更多PHP反射机制用法实例相关文章请关注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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 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)

Apakah alternatif kepada mekanisme refleksi Java? Apakah alternatif kepada mekanisme refleksi Java? Apr 15, 2024 pm 02:18 PM

Alternatif kepada mekanisme refleksi Java termasuk: 1. Pemprosesan anotasi: Gunakan anotasi untuk menambah metadata dan menjana kod pada masa penyusunan untuk memproses maklumat. 2. Metaprogramming: Menjana dan mengubah suai kod semasa runtime, dan boleh mencipta kelas secara dinamik dan mendapatkan maklumat. 3. Proksi: Cipta kelas baharu dengan antara muka yang sama seperti kelas sedia ada, yang boleh meningkatkan atau mengubah suai kelakuannya semasa masa jalan.

Bagaimanakah mekanisme refleksi Java mengubah suai tingkah laku kelas? Bagaimanakah mekanisme refleksi Java mengubah suai tingkah laku kelas? May 03, 2024 pm 06:15 PM

Mekanisme refleksi Java membolehkan program mengubah suai tingkah laku kelas secara dinamik tanpa mengubah suai kod sumber. Dengan mengendalikan kelas melalui objek Kelas, anda boleh membuat contoh melalui newInstance(), mengubah suai nilai medan peribadi, memanggil kaedah peribadi, dsb. Refleksi harus digunakan dengan berhati-hati, walau bagaimanapun, kerana ia boleh menyebabkan tingkah laku dan isu keselamatan yang tidak dijangka serta mempunyai overhed prestasi.

Bagaimanakah pengecualian NoSuchFieldException dalam Java dihasilkan? Bagaimanakah pengecualian NoSuchFieldException dalam Java dihasilkan? Jun 25, 2023 pm 04:30 PM

Java adalah salah satu bahasa pengaturcaraan yang paling banyak digunakan di dunia, dan pengendalian pengecualian adalah bahagian yang sangat penting dalam proses pengaturcaraan Java. Artikel ini akan memperkenalkan pengecualian NoSuchFieldException dalam Java, cara ia dijana dan cara menanganinya. 1. Definisi NoSuchFieldException NoSuchFieldException ialah pengecualian Disemak dalam Java, yang bermaksud ia dilemparkan apabila medan yang ditentukan tidak ditemui.

Penggunaan mekanisme refleksi Java dalam rangka kerja Spring? Penggunaan mekanisme refleksi Java dalam rangka kerja Spring? Apr 15, 2024 pm 02:03 PM

Mekanisme refleksi Java digunakan secara meluas dalam rangka kerja Spring untuk aspek berikut: Suntikan ketergantungan: instantiating kacang dan suntikan kebergantungan melalui refleksi. Penukaran jenis: Tukar parameter permintaan kepada jenis parameter kaedah. Penyepaduan rangka kerja kegigihan: memetakan kelas entiti dan jadual pangkalan data. Sokongan AspectJ: memintas panggilan kaedah dan meningkatkan tingkah laku kod. Proksi Dinamik: Cipta objek proksi untuk meningkatkan kelakuan objek asal.

Penggunaan mekanisme refleksi dalam konkurensi Java? Penggunaan mekanisme refleksi dalam konkurensi Java? Apr 15, 2024 pm 09:03 PM

Jawapan: Mekanisme refleksi membolehkan program Java untuk memeriksa dan mengubah suai kelas dan objek pada masa jalan melalui API pantulan, yang boleh digunakan untuk melaksanakan mekanisme penyelarasan fleksibel dalam penyelarasan Java. Aplikasi: Buat benang secara dinamik. Tukar keutamaan benang secara dinamik. Suntikan kebergantungan.

Penggunaan mekanisme refleksi Java dalam pengkomputeran awan? Penggunaan mekanisme refleksi Java dalam pengkomputeran awan? Apr 16, 2024 am 09:18 AM

Refleksi Java digunakan secara meluas dalam pengkomputeran awan, termasuk: penemuan perkhidmatan dinamik (mendapatkan kelas perkhidmatan daripada pendaftaran perkhidmatan dan kaedah panggilan), pengembangan dan pengecutan automatik (penunjuk sistem pemantauan dan melaraskan bilangan contoh perkhidmatan), pemuatan konfigurasi dinamik dan kod penjanaan dan pengendalian pengecualian tersuai. Melalui refleksi, program boleh dengan mudah menyesuaikan diri dengan sifat persekitaran pengkomputeran awan yang dinamik dan teragih dan melaksanakan tugas automatik seperti penggunaan automatik.

Mekanisme refleksi dalam PHP Mekanisme refleksi dalam PHP Aug 31, 2023 pm 01:57 PM

Refleksi biasanya ditakrifkan sebagai keupayaan program untuk memeriksa dirinya sendiri dan mengubah suai logiknya semasa melaksanakan. Dalam istilah yang kurang teknikal, refleksi meminta objek untuk memberitahu anda sifat dan kaedahnya, dan menukar ahli tersebut (walaupun ahli persendirian). Dalam kursus ini, kita akan melihat dengan lebih dekat cara untuk mencapai ini, dan bila ia mungkin berguna. Sedikit sejarah Pada permulaan era pengaturcaraan, bahasa himpunan muncul. Program yang ditulis dalam bahasa himpunan berada dalam daftar fizikal di dalam komputer. Komposisi, kaedah dan nilainya boleh disemak pada bila-bila masa dengan membaca daftar. Lebih-lebih lagi, anda boleh menukar program anda dengan hanya mengubah suai daftar ini semasa ia berjalan. Ia memerlukan sedikit pengetahuan mendalam tentang program yang sedang berjalan, tetapi ia bersifat reflektif. Seperti mana-mana mainan yang keren

Ciri Lanjutan PHP: Fahami Kuasa Mekanisme Refleksi Ciri Lanjutan PHP: Fahami Kuasa Mekanisme Refleksi Jun 01, 2024 pm 07:40 PM

Refleksi PHP ialah mekanisme yang berkuasa untuk mendapatkan maklumat struktur kod runtime. Ia membolehkan anda: 1. Semak struktur kelas dan kaedah 3. Buat contoh kelas baharu; Dapatkan maklumat parameter kaedah; 6. Ubah suai nilai atribut 7. Panggil kaedah persendirian. Melalui refleksi, anda boleh meningkatkan kebolehskalaan dan fleksibiliti kod anda dan membangunkan aplikasi PHP yang lebih berkuasa.

See all articles