cari
Rumahpembangunan bahagian belakangmasalah PHPApakah pembolehubah statik dalam kaedah php

Apakah pembolehubah statik dalam kaedah php

Oct 25, 2021 am 09:31 AM
phppembolehubah statik

Pembolehubah statik dalam PHP hanya wujud dalam skop fungsi, iaitu, pembolehubah statik hanya hidup pada tindanan dalam PHP, selagi kata kunci statik ditambah sebelum pembolehubah, pembolehubah menjadi statik; pembolehubah.

Apakah pembolehubah statik dalam kaedah php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Apakah pembolehubah statik dalam kaedah php?

Penjelasan terperinci tentang pembolehubah statik dan penggunaan pembolehubah statik dalam PHP

Pembolehubah statik hanya wujud dalam skop fungsi, iaitu, pembolehubah statik hanya hidup pada tindanan. Secara amnya, pembolehubah dalam fungsi akan dikeluarkan selepas fungsi tamat, seperti pembolehubah tempatan, tetapi pembolehubah statik tidak akan. Maksudnya, nilai pembolehubah akan dikekalkan apabila fungsi ini dipanggil seterusnya.

Selagi kata kunci statik ditambah sebelum pembolehubah, pembolehubah menjadi pembolehubah statik.

<?php
  function test()
  {
    static $nm = ;
    $nm = $nm * ;
    print $nm."<br />";
  }
  // 第一次执行,$nm = 
  test();
  // 第一次执行,$nm = 
  test();
  // 第一次执行,$nm = 
  test();
?>

Hasil pelaksanaan program:
1
2
2
4
3
8

Fungsi Selepas test() dilaksanakan, nilai pembolehubah $nm disimpan.

Sifat statik sering digunakan dalam kelas, seperti ahli statik dan kaedah statik.

Senarai Program: Ahli statik kelas

Pembolehubah statik $nm tergolong dalam kelas nowamagic, bukan pada instance kelas. Pembolehubah ini sah untuk semua keadaan.

:: ialah pengendali pengehad skop Skop kendiri digunakan di sini dan bukannya skop $this hanya mewakili contoh semasa kelas, dan diri:: mewakili kelas itu sendiri.

<?php
  class nowamagic
  {
    public static $nm = ;
    function nmMethod()
    {
      self::$nm += ;
      echo self::$nm . &#39;<br />&#39;;
    }
  }
  $nmInstance = new nowamagic();
  $nmInstance -> nmMethod();
  $nmInstance = new nowamagic();
  $nmInstance -> nmMethod();
?>

Keputusan berjalan program:
1
3
2
5

Senarai Program: Atribut statik

<?php
  class NowaMagic
  {
    public static $nm = &#39;www.nowamagic.net&#39;;
    public function nmMethod()
    {
      return self::$nm;
    }
  }
  class Article extends NowaMagic
  {
    public function articleMethod()
    {
      return parent::$nm;
    }
  }
  // 通过作用于限定操作符访问静态变量
  print NowaMagic::$nm . "<br />";
  // 调用类的方法
  $nowamagic = new NowaMagic();
  print $nowamagic->nmMethod() . "<br />";
  print Article::$nm . "<br />";
  $nmArticle = new Article();
  print $nmArticle->nmMethod() . "<br />";
?>

Hasil larian program:

www.nowamagic.net
www.nowamagic.net
www.nowamagic.net
www.nowamagic.net

Senarai Program: Pembina statik ringkas

PHP tidak mempunyai pembina statik Anda mungkin perlu memulakan kelas statik Terdapat cara yang sangat mudah untuk memanggil kelas secara langsung kaedah Demonstrasi() kelas.

<?php
function Demonstration()
{
  return &#39;This is the result of demonstration()&#39;;
}
class MyStaticClass
{
  //public static $MyStaticVar = Demonstration(); //!!! FAILS: syntax error
  public static $MyStaticVar = null;
  public static function MyStaticInit()
  {
    //this is the static constructor
    //because in a function, everything is allowed, including initializing using other functions
    self::$MyStaticVar = Demonstration();
  }
} MyStaticClass::MyStaticInit(); //Call the static constructor
echo MyStaticClass::$MyStaticVar;
//This is the result of demonstration()
?>

Hasil berjalan program:

Ini adalah hasil demonstrasi()

Berikut ialah pengenalan kepada penggunaan pembolehubah statik PHP statik

Kata kunci statik adalah sangat biasa dalam pengaturcaraan C# Ia digunakan untuk mengubah suai pengisytiharan ahli statik yang tergolong dalam jenis itu sendiri dan bukannya objek tertentu. Pengubah suai statik boleh digunakan pada kelas, medan, kaedah, sifat, pengendali, peristiwa dan pembina, tetapi bukan pada pengindeks, pemusnah atau jenis selain daripada kelas. Kelas, fungsi dan pembolehubah yang diisytiharkan sebagai statik tidak akan dapat merujuk kaedah atau pembolehubah contoh Selain itu, dalam C#, sebaik sahaja pengubah suai statik ditambahkan pada kelas, semua pembolehubah dan kaedah di dalamnya mestilah statik. Pembolehubah statik dan kaedah mesti dirujuk melalui nama kelas dan bukan melalui objek contoh.

Jadi apakah perbezaan antara kata kunci statik dalam PHP dan C#?

Skop pengisytiharan

Berbanding dengan C#, skop penggunaan pembolehubah statik dalam PHP bukan sahaja boleh menambah pengubah suai statik di hadapan kelas, kaedah atau pembolehubah, malah kita boleh Tambah kata kunci statik kepada pembolehubah dalaman fungsi. Nilai pembolehubah dengan pengubah statik ditambah tidak akan hilang walaupun selepas fungsi itu dilaksanakan, maksudnya, pembolehubah masih mengingati nilai asalnya apabila fungsi ini dipanggil. Contohnya:

<?php
function test()
{
  static $var=;
  $var+=;
  echo $var.&#39; &#39;;
}
test();
test();
test();
?>

Hasil operasi adalah seperti berikut:

3 5 7

Satu perkara yang perlu diberi perhatian di sini ialah operasi penetapan pembolehubah hanya akan dilakukan pada pembolehubah pertama Ia akan dipanggil semasa pemulaan ini tidak akan dipanggil semasa pelaksanaan fungsi berikutnya.

Memandangkan fungsi dalam PHP juga merupakan warga kelas pertama, tidak seperti C#, kami boleh mentakrifkan secara langsung fungsi dan memanggilnya terus di mana-mana dalam kod, yang agak serupa dengan JavaScript. Oleh itu, pada masa ini, pembolehubah statik fungsi lebih berguna daripada mentakrifkan pembolehubah global, yang boleh mengelakkan konflik yang disebabkan oleh definisi pembolehubah yang berulang. Oleh kerana fungsi dalam C# tidak boleh ditakrifkan dan dipanggil secara langsung, ia mesti dihoskan dalam kelas Oleh itu, jika fungsi memerlukan pembolehubah statik, kita hanya perlu mentakrifkannya dalam kelas untuk mencapai kesan yang sama.

Kaedah panggilan

Dalam C#, cara kita memanggil ahli statik adalah sangat mudah dan konsisten, kerana ahli statik tidak tergolong dalam objek contoh, jadi sama ada ia kaedah atau pembolehubah, Akses C# kepada ahli statiknya sentiasa melalui nama kelas.method (pembolehubah). Dan dalam C#, fungsi statik tidak boleh ditetapkan sebagai kaedah maya atau ditindih. PHP menyediakan sokongan yang lebih fleksibel dan pelbagai untuk ini.

Pertama sekali, kita tahu bahawa kaedah contoh dalam PHP dipanggil melalui someobj->someFun(), jadi bolehkah kita memanggil fungsi statik melalui SomeClass->someFun() seperti C# ? Jawapannya tidak. Dalam PHP, ahli statik hanya boleh dipanggil melalui ::, seperti SomeClass::someFun().

<?php
class TestC
{
  public static $var=;
  public $var=;
  function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
    echo $this->var.&#39; &#39;;
  }
  public static function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
  }
}
$t=new TestC();
$t->t();
TestC::t();
?>

Keputusan yang dijalankan adalah seperti berikut:

3 1 5

Satu lagi perkara yang berbeza daripada C# ialah dalam kaedah dalam kelas, jika kita perlu Untuk memanggil pembolehubah statik, anda mesti lulus pembolehubah statik self::$somVar (perhatikan tanda $ di hadapan pembolehubah, pembolehubah contoh tidak diperlukan), dan untuk memanggil kaedah statik ialah self::someFun( ) (tanda $ tidak diperlukan di sini). Seperti contoh di atas.

另外,与C#最大的不同之处就是,PHP中,子类是可以覆盖父类的静态函数或变量的,不仅如此,(站在C#程序员的角度来看,我觉得PHP这点反而将事情搞复杂了),由于默认self::staticFun()调用的是子类的静态函数,这个时候如果我们想调用父类的静态变量怎么办呢?这里PHP提供了额外的parent来调用基类的静态成员。如:

<?php
class TestC
{
  public static $var=;
  public $var=;
  function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
    echo $this->var.&#39; &#39;;
  }
  public static function t()
  {
    self::$var+=;
    echo self::$var.&#39; &#39;;
  }
}
$t=new TestC();
$t->t();
TestC::t();
?>

运行结果如下:

3 5 ‘Hello'

最好,根据上面的例子我们很容易想到,子类访问父类可以使用parent关键字,那么父类如何访问子类的静态方法呢?这里给出static的另外一个用法,这里如果将调用的静态方法前面的作用域换成static的话,PHP会根据该类的继承层次来计算最终的静态方法。如:

<?php
class Test
{
  function t()
  {
    static::t();
  }
  public static function t()
  {
    echo self::&#39;Test &#39;;
  }
}
class Test extends Test
{
  static function t()
  {
    echo self::&#39;Test &#39;;
  }
}
$t=new Test();
$t->t();
Test::t();
?>

运行结果如下:

Test2 Test2

这里t实例在t1方法调用t2静态方法时,会根据其实例找到最终的静态方法并输出Test2。

总结

从上面的分析,我们不难看出,对于静态成员的使用,PHP提供了比C#更为强大的功能或灵活性,但从我的角度来看,这种灵活性不见得就更好,从某种角度来看,如果类的继承层次过于复杂,它可能会让我产生混淆。当然,同样的工具不同人使用效果会完全不一样,既然PHP提供了更多样的选择,那么相信如果使用恰当的话,PHP中的static可能会提供比C#中更为强大而简便的使用方式。

推荐学习:《PHP视频教程

Atas ialah kandungan terperinci Apakah pembolehubah statik dalam kaedah php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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
Asid vs pangkalan data asas: perbezaan dan bila menggunakan setiap.Asid vs pangkalan data asas: perbezaan dan bila menggunakan setiap.Mar 26, 2025 pm 04:19 PM

Artikel ini membandingkan model pangkalan data asid dan asas, memperincikan ciri -ciri mereka dan kes penggunaan yang sesuai. Asid mengutamakan integriti data dan konsistensi, sesuai untuk aplikasi kewangan dan e-dagang, sementara asas memberi tumpuan kepada ketersediaan dan

PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail.PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail.Mar 26, 2025 pm 04:18 PM

Artikel ini membincangkan mendapatkan muat naik fail PHP untuk mengelakkan kelemahan seperti suntikan kod. Ia memberi tumpuan kepada pengesahan jenis fail, penyimpanan selamat, dan pengendalian ralat untuk meningkatkan keselamatan aplikasi.

Pengesahan Input PHP: Amalan Terbaik.Pengesahan Input PHP: Amalan Terbaik.Mar 26, 2025 pm 04:17 PM

Artikel membincangkan amalan terbaik untuk pengesahan input PHP untuk meningkatkan keselamatan, memberi tumpuan kepada teknik seperti menggunakan fungsi terbina dalam, pendekatan putih, dan pengesahan sisi pelayan.

PHP API Kadar Mengehadkan: Strategi Pelaksanaan.PHP API Kadar Mengehadkan: Strategi Pelaksanaan.Mar 26, 2025 pm 04:16 PM

Artikel ini membincangkan strategi untuk melaksanakan kadar API yang mengehadkan PHP, termasuk algoritma seperti baldi token dan baldi bocor, dan menggunakan perpustakaan seperti simfoni/kadar-limiter. Ia juga meliputi pemantauan, had kadar penyesuaian secara dinamik, dan tangan

PHP Kata Laluan Hashing: password_hash dan password_verify.PHP Kata Laluan Hashing: password_hash dan password_verify.Mar 26, 2025 pm 04:15 PM

Artikel ini membincangkan manfaat menggunakan password_hash dan password_verify dalam php untuk mendapatkan kata laluan. Hujah utama ialah fungsi ini meningkatkan perlindungan kata laluan melalui penjanaan garam automatik, algoritma hashing yang kuat, dan secur

OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum.OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum.Mar 26, 2025 pm 04:13 PM

Artikel ini membincangkan kelemahan OWASP 10 dalam strategi PHP dan mitigasi. Isu -isu utama termasuk suntikan, pengesahan yang rosak, dan XSS, dengan alat yang disyorkan untuk memantau dan mendapatkan aplikasi PHP.

Pencegahan PHP XSS: Bagaimana Melindungi Terhadap XSS.Pencegahan PHP XSS: Bagaimana Melindungi Terhadap XSS.Mar 26, 2025 pm 04:12 PM

Artikel ini membincangkan strategi untuk mencegah serangan XSS di PHP, memberi tumpuan kepada sanitisasi input, pengekodan output, dan menggunakan perpustakaan dan kerangka kerja yang meningkatkan keselamatan.

PHP Interface vs Kelas Abstrak: Bila Menggunakan Setiap.PHP Interface vs Kelas Abstrak: Bila Menggunakan Setiap.Mar 26, 2025 pm 04:11 PM

Artikel ini membincangkan penggunaan antara muka dan kelas abstrak dalam PHP, memberi tumpuan kepada masa untuk menggunakan setiap. Antara muka menentukan kontrak tanpa pelaksanaan, sesuai untuk kelas yang tidak berkaitan dan warisan berganda. Kelas Abstrak Memberi Funct Biasa

See all articles

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 laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.