Rumah pembangunan bahagian belakang tutorial php PHP命名空间解析规则

PHP命名空间解析规则

Jul 29, 2016 am 09:12 AM
namespace new

PHP命名空间解析规则

命名空间名称定义

非限定名称Unqualified name

<code>名称中不包含命名空间分隔符的标识符,例如Foo
</code>
Salin selepas log masuk

限定名称Qualified name

<code>名称中含有命名空间分隔符的标识符,例如:Foo\Bar
</code>
Salin selepas log masuk

完全限定名称Fully qualified name

<code>名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如:\Foo\Bar.
namespace\Foo 也是一个完全限定名称。
</code>
Salin selepas log masuk

名称解析遵循下列规则

  1. 对完全限定名称的函数,类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。
  2. 所有的非限定名称和限定名称(非完全限定名称)根据当前的导入规则在编译时进行转换。例如,如果命名空间 A\B\C 被导入为 C,那么对 C\D\e() 的调用就会被转换为 A\B\C\D\e()。
  3. 在命名空间内部,所有的没有根据导入规则转换的限定名称均会在其前面加上当前的命名空间名称。例如,在命名空间 A\B 内部调用 C\D\e(),则 C\D\e() 会被转换为 A\B\C\D\e()。
  4. 非限定类名根据当前的导入规则在编译时转换(用全名代替短的导入名称)。例如,如果命名空间 A\B\C 导入为C,则 new C() 被转换为 new A\B\C()。
  5. 在命名空间内部(例如A\B),对非限定名称的函数调用是在运行时解析的。例如对函数 foo() 的调用是这样解析的:
    1. 在当前命名空间中查找名为 A\B\foo() 的函数
    2. 尝试查找并调用 全局(global) 空间中的函数 foo()。
  6. 在命名空间(例如A\B)内部对非限定名称或限定名称类(非完全限定名称)的调用是在运行时解析的。下面是调用 new C() 及 new D\E() 的解析过程:

    new C()的解析:

    1. 在当前命名空间中查找A\B\C类;

    2. 尝试自动装载类A\B\C。

    new D\E()的解析:

    1. 在类名称前面加上当前命名空间名称变成:A\B\D\E,然后查找该类

    2. 尝试自动装载类 A\B\D\E。

    为了引用全局命名空间中的全局类,必须使用完全限定名称 new \C()。

名称解析示例

<code><?php namespace A;
use B\D, C\E as F;

// 函数调用

foo();      // 首先尝试调用定义在命名空间"A"中的函数foo()
            // 再尝试调用全局函数 "foo"

\foo();     // 调用全局空间函数 "foo" 

my\foo();   // 调用定义在命名空间"A\my"中函数 "foo" 

F();        // 首先尝试调用定义在命名空间"A"中的函数 "F" 
            // 再尝试调用全局函数 "F"

// 类引用

new B();    // 创建命名空间 "A" 中定义的类 "B" 的一个对象
            // 如果未找到,则尝试自动装载类 "A\B"

new D();    // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象
            // 如果未找到,则尝试自动装载类 "B\D"

new F();    // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象
            // 如果未找到,则尝试自动装载类 "C\E"

new \B();   // 创建定义在全局空间中的类 "B" 的一个对象
            // 如果未发现,则尝试自动装载类 "B"

new \D();   // 创建定义在全局空间中的类 "D" 的一个对象
            // 如果未发现,则尝试自动装载类 "D"

new \F();   // 创建定义在全局空间中的类 "F" 的一个对象
            // 如果未发现,则尝试自动装载类 "F"

// 调用另一个命名空间中的<strong>静态方法或命名空间函数

B\foo();    // 调用命名空间 "A\B" 中函数 "foo"

B::foo();   // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法
            // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B"

D::foo();   // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法
            // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D"

\B\foo();   // 调用命名空间 "B" 中的函数 "foo" 

\B::foo();  // 调用全局空间中的类 "B" 的 "foo" 方法
            // 如果类 "B" 未找到,则尝试自动装载类 "B"

// 当前命名空间中的<strong>静态方法</strong>或函数

A\B::foo();   // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B"

\A\B::foo();  // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B"
?>
</code>
Salin selepas log masuk
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了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.

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)

Ruang nama bergabung dalam PHP8.0 Ruang nama bergabung dalam PHP8.0 May 14, 2023 am 08:43 AM

Dengan perkembangan teknologi yang berterusan, bahasa PHP sentiasa dikemas kini dan ditambah baik. PHP8.0, sebagai versi terbaru bahasa PHP, lebih berkuasa daripada versi sebelumnya. Salah satu ciri pentingnya ialah penggabungan ruang nama. Jadi, apakah ruang nama yang digabungkan? Apa gunanya? Mari kita bincangkan perkara ini secara terperinci di bawah. Ruang nama ialah ruang nama dalam PHP yang digunakan untuk membezakan kod yang berbeza Ia membolehkan kita menggunakan kelas, fungsi atau pemalar dengan nama yang sama dalam kod. dalam versi sebelumnya

Bagaimana untuk membuang stickynotesnamespace Bagaimana untuk membuang stickynotesnamespace Dec 27, 2023 pm 01:51 PM

Apabila kita menggunakan sistem win7, kita akan menemui alat stickynotes. Stickynotes sebenarnya berfungsi seperti pad nota elektronik Jika anda ingin memadamkan perkataan, anda perlu menyahpasangnya dalam panel kawalan. Apakah ruang nama stickynotes dan bagaimana untuk memadamnya Kaedah 1: Cari - Kaedah 2: Cari dan klik padam kemudian Kaedah 3: Gunakan perisian pihak ketiga untuk menghancurkan dan memadam dengan sistem, sama seperti nota melekit di desktop, ia adalah mudah untuk pengguna menulis perkara penting. Biasanya perisian berada dalam keadaan tersembunyi Jika perlu, ia boleh melompat keluar pada masa yang ditetapkan dan mengingatkan pengguna.

Apakah perbezaan antara buat dan baharu dalam bahasa go Apakah perbezaan antara buat dan baharu dalam bahasa go Jan 09, 2023 am 11:44 AM

Perbezaan: 1. Make hanya boleh digunakan untuk memperuntukkan dan memulakan data jenis slice, map dan chan manakala baru boleh memperuntukkan sebarang jenis data. 2. Peruntukan baru mengembalikan penunjuk, iaitu jenis "*Jenis" manakala membuat pulangan rujukan, iaitu Jenis. 3. Ruang yang diperuntukkan oleh baru akan dikosongkan selepas membuat memperuntukkan ruang, ia akan dimulakan.

Bagaimana untuk menggunakan kata kunci baharu dalam java Bagaimana untuk menggunakan kata kunci baharu dalam java May 03, 2023 pm 10:16 PM

1. Konsep Dalam bahasa Java, ungkapan "baru" bertanggungjawab untuk mencipta contoh, di mana pembina dipanggil untuk memulakan contoh; jenis nilai pulangan pembina itu sendiri adalah tidak sah, bukan "pembina mengembalikan yang baru dibuat Rujukan objek", tetapi nilai ungkapan baharu ialah rujukan kepada objek yang baru dibuat. 2. Tujuan: Mencipta objek kelas baharu 3. Mekanisme kerja: Peruntukkan ruang memori untuk ahli objek, dan nyatakan nilai lalai secara eksplisit, lakukan pengiraan kaedah pembinaan, dan kembalikan nilai rujukan dengan kerap bermakna membuka yang baru dalam ingatan Ruang memori diperuntukkan dalam kawasan timbunan dalam ingatan Ia dikawal oleh jvm dan menguruskan memori secara automatik. Di sini kita menggunakan kelas String sebagai contoh. Pu

Bagaimana untuk menggunakan NameSpace PHP7 dan Gunakan kata kunci untuk menyusun struktur kod? Bagaimana untuk menggunakan NameSpace PHP7 dan Gunakan kata kunci untuk menyusun struktur kod? Oct 19, 2023 am 08:07 AM

Bagaimana untuk menggunakan NameSpace PHP7 dan Gunakan kata kunci untuk menyusun struktur kod? Pengenalan: Dalam pembangunan perisian, struktur organisasi kod adalah sangat penting Ia berkaitan secara langsung dengan kebolehbacaan, kebolehselenggaraan dan kebolehskalaan kod. Dengan lelaran berterusan versi PHP, PHP7 memperkenalkan kata kunci NameSpace dan Use, yang memberikan kami lebih fleksibiliti dan kemudahan. Artikel ini akan memperkenalkan cara menggunakan NameSpace PHP7 dan Gunakan kata kunci untuk menyusun struktur kod dan menyediakan kod khusus

Bagaimanakah pengendali baharu berfungsi dalam js? Bagaimanakah pengendali baharu berfungsi dalam js? Feb 19, 2024 am 11:17 AM

Bagaimanakah operator baharu dalam js berfungsi? Contoh kod khusus diperlukan. Fungsinya adalah untuk mencipta objek contoh baharu berdasarkan pembina yang ditentukan dan mengembalikan rujukan kepada objek. Apabila menggunakan operator baharu, langkah berikut sebenarnya dilakukan: buat objek kosong baharu arahkan prototaip objek kosong ke objek prototaip pembina; objek); jalankan kod dalam pembina dan berikan objek baharu

Kamera GFX kanta tetap Fujifilm baharu untuk memperkenalkan sensor format sederhana baharu, boleh memulakan siri serba baharu Kamera GFX kanta tetap Fujifilm baharu untuk memperkenalkan sensor format sederhana baharu, boleh memulakan siri serba baharu Sep 27, 2024 am 06:03 AM

Fujifilm telah melihat banyak kejayaan dalam beberapa tahun kebelakangan ini, sebahagian besarnya disebabkan oleh simulasi filemnya dan populariti kamera gaya jarak jari padatnya di media sosial. Walau bagaimanapun, ia nampaknya tidak berpuas hati dengan kejayaannya, menurut Fujirumors. u

See all articles