Editor akan membimbing anda untuk memetik nama kelas (versi php)

醉折花枝作酒筹
Lepaskan: 2023-03-11 20:52:01
asal
1587 orang telah melayarinya

Dalam artikel sebelum ini, kami telah mempelajari tentang sub-ruang nama dan cara menentukan sub-ruang nama Jika perlu, sila baca "Apakah sub-ruang nama PHP?" 》. Kali ini kami akan memperkenalkan kepada anda cara menggunakan nama kelas rujukan Anda boleh merujuknya jika perlu.

Mula-mula mari kita lihat contoh.

kod fail file1.php

<?php
namespace Foo\Bar\subnamespace; 

const FOO = 1;
function foo() {}
class foo
{
    static function staticmethod() {}
}
?>
Salin selepas log masuk

kod fail fail2.php

<?php
namespace Foo\Bar;
include &#39;file1.php&#39;;

const FOO = 2;
function foo() {}
class foo
{
    static function staticmethod() {}
}

/* 非限定名称 */
foo(); // 解析为函数 Foo\Bar\foo
foo::staticmethod(); // 解析为类 Foo\Bar\foo ,方法为 staticmethod
echo FOO; // 解析为常量 Foo\Bar\FOO

/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
                                  // 以及类的方法 staticmethod
echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO
                                  
/* 完全限定名称 */
\Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
?>
Salin selepas log masuk

Mari kita lihat contoh ini dengan lebih dekat. Yang paling menonjol ialah foo::staticmethod() Adakah anda perasan bahawa tidak kira penggunaan mana yang kita gunakan, kita perlu menggunakan "foo::staticmethod()", tetapi apakah maksudnya? Mari kita ketahui secara terperinci.

Menurut contoh kita dapat melihat bahawa "staticmethod()" sebenarnya adalah nama kaedah statik dan "foo::" dihuraikan berdasarkan "foo()".

Nama kelas dalam ruang nama PHP boleh dirujuk dalam tiga cara:

  • Nama tidak layak atau nama kelas tanpa awalan , Contohnya " $c=new foo();" atau "foo::staticmethod();". Jika ruang nama semasa ialah space, foo akan diselesaikan kepada spacefoo. Jika foo ialah kod global, kod tidak terkandung dalam mana-mana ruang nama, maka foo akan dihuraikan sebagai foo.

    • Amaran: Jika fungsi atau pemalar dalam ruang nama tidak ditakrifkan, fungsi tidak layak atau nama tetap akan diselesaikan kepada fungsi global atau nama tetap.

  • nama yang layak, atau nama yang mengandungi awalan , seperti $c = new espacefoo(); atau spacefoo::staticmethod();. Jika ruang nama semasa ialah space, foo akan diselesaikan kepada spacespacefoo. Jika kod yang menggunakan foo bersifat global, kod tidak terkandung dalam mana-mana ruang nama, foo akan dihuraikan spacefoo.

  • Nama yang layak sepenuhnya, atau nama yang termasuk pengendali awalan global , contohnya, $c = new spacefoo(); atau spacefoo::staticmethod();. Dalam kes ini, foo sentiasa dihuraikan sebagai nama literal (literal name)spacefoo dalam kod.

Fungsi dengan nama yang layak sepenuhnya akan diselesaikan semasa penyusunan apabila memanggil kelas dan pemalar.

Nama yang tidak layak sepenuhnya akan ditukar pada masa penyusunan mengikut peraturan import.

Dalam ruang nama, semua nama layak yang tidak ditukar mengikut peraturan import didahului oleh nama ruang nama semasa.

Itu sahaja jika anda ingin mengetahui perkara lain, anda boleh klik ini. → →tutorial video php

Atas ialah kandungan terperinci Editor akan membimbing anda untuk memetik nama kelas (versi php). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
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
Tutorial Popular
Lagi>
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!