PHP中命名空间这部分内容的详解
这篇文章给大家介绍的内容是关于PHP中命名空间这部分内容的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
PHP的命名空间(namespace)是php5.3之后才有的。这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。
为什么php中要使用namespace?
假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespace的时候,我们会想各种命名规则来区分不同的类,比如project1_school1_class1_Student或者project2_school_class_Student。
引入namespace之后就可以将这个有效规避了,一个namespace就相当于对应一个文件路径,查找这个类的时候,就会去对应的文件路径查找类定义文件了。
namespace的定义和使用
定义:
<code class="php"><?php<br/><br/>namespace Myproject;</code>
或者
<code class="php"><?php<br/><br/>namespace Myproject {<br/><br/>}</code>
使用:
<code class="php"><?php<br/><br/>use Myproject/School;</code>
<code class="php"><?php<br/><br/>use Myproject/School as School1; // 别名</code>
命名空间是运行时解析的。use就相当于一种声明,并不解析和加载。比如下面这个例子:
test.php
<code class="php"><?php<br/>use my\name;<br/>require_once("/home/yejianfeng/handcode/test/namespace1.php");<br/>$a = new my\name\A();<br/>$a->Print1();</code>
namespace1.php
<code class="php"><?php<br/>namespace my\name;<br/>class A {<br/> public function Print1(){<br/> echo 11;<br/> }<br/>}</code>
虽然require_once在use下面,也是可以正常运行的,因为程序只有在new my\name\A()的时候才去加载命名空间my\name
全局类和命名空间类
如果要new一个全局类使用 new \A()
如果要new一个命名空间类,使用new my\namespace\A()
命名空间的顺序
自从有了命名空间之后,最容易出错的该是使用类的时候,这个类的寻找路径是什么样的了。
如果能弄清楚manual中的这个例子就能全部弄清楚寻找顺序了。
<code class="php"><?php<br/>namespace A;<br/>use B\D, C\E as F;<br/><br/>// 函数调用<br/><br/>foo(); // 首先尝试调用定义在命名空间"A"中的函数foo()<br/> // 再尝试调用全局函数 "foo"<br/><br/>\foo(); // 调用全局空间函数 "foo" <br/><br/>my\foo(); // 调用定义在命名空间"A\my"中函数 "foo" <br/><br/>F(); // 首先尝试调用定义在命名空间"A"中的函数 "F" <br/> // 再尝试调用全局函数 "F"<br/><br/>// 类引用<br/><br/>new B(); // 创建命名空间 "A" 中定义的类 "B" 的一个对象<br/> // 如果未找到,则尝试自动装载类 "A\B"<br/><br/>new D(); // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象<br/> // 如果未找到,则尝试自动装载类 "B\D"<br/><br/>new F(); // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象<br/> // 如果未找到,则尝试自动装载类 "C\E"<br/><br/>new \B(); // 创建定义在全局空间中的类 "B" 的一个对象<br/> // 如果未发现,则尝试自动装载类 "B"<br/><br/>new \D(); // 创建定义在全局空间中的类 "D" 的一个对象<br/> // 如果未发现,则尝试自动装载类 "D"<br/><br/>new \F(); // 创建定义在全局空间中的类 "F" 的一个对象<br/> // 如果未发现,则尝试自动装载类 "F"<br/><br/>// 调用另一个命名空间中的静态方法或命名空间函数<br/><br/>B\foo(); // 调用命名空间 "A\B" 中函数 "foo"<br/><br/>B::foo(); // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法<br/> // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B"<br/><br/>D::foo(); // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法<br/> // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D"<br/><br/>\B\foo(); // 调用命名空间 "B" 中的函数 "foo" <br/><br/>\B::foo(); // 调用全局空间中的类 "B" 的 "foo" 方法<br/> // 如果类 "B" 未找到,则尝试自动装载类 "B"<br/><br/>// 当前命名空间中的静态方法或函数<br/><br/>A\B::foo(); // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法<br/> // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B"<br/><br/>\A\B::foo(); // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法<br/> // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B"<br/>?></code>
相关文章推荐:
Atas ialah kandungan terperinci PHP中命名空间这部分内容的详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel ini dicetak semula daripada akaun awam WeChat "Hidup dalam Era Maklumat" Penulis hidup dalam era maklumat. Untuk mencetak semula artikel ini, sila hubungi akaun awam Living in the Information Age. Dalam pembelajaran mesin, konsep asas ialah cara menilai perbezaan antara dua sampel, supaya persamaan dan maklumat kategori antara kedua-dua sampel dapat dinilai. Ukuran untuk menilai persamaan ini ialah jarak antara dua sampel dalam ruang ciri. Terdapat banyak kaedah pengukuran berdasarkan ciri data yang berbeza. Secara umumnya, untuk dua sampel data x, y, takrifkan fungsi d(x, y) Jika ia ditakrifkan sebagai jarak antara dua sampel, maka d(x, y) perlu memenuhi sifat asas berikut : Bukan-). negatif: d(x, y)>=0 Identiti: d(x, y)=0 ⇔ x=y pasangan

Ruang swap memainkan peranan penting dalam sistem Linux, terutamanya apabila sistem kekurangan ingatan. Ia bertindak sebagai ruang storan memori sandaran yang membantu sistem berjalan dengan lancar dan mengekalkan kestabilan walaupun di bawah beban yang tinggi. Artikel ini memberi anda panduan terperinci untuk menambah ruang swap pada Ubuntu 22.04LTS untuk memastikan prestasi sistem anda dioptimumkan dan boleh mengendalikan pelbagai beban kerja. Memahami Ruang Swap Space Swap menyediakan memori maya yang digunakan untuk menambah RAM fizikal sistem. Apabila sistem kekurangan RAM, kernel menukar data ke cakera untuk mengelakkan kehabisan memori dan sistem ranap. Sistem Linux biasanya menggunakan ruang swap untuk mengendalikan situasi ini. Jalankan berbilang aplikasi intensif memori secara serentak untuk memproses fail atau data yang sangat besar

Selesaikan ralat PHP: Kelas ruang nama yang ditentukan tidak ditemui Semasa membangunkan menggunakan PHP, kami sering menghadapi pelbagai mesej ralat. Salah satu ralat biasa ialah "Kelas ruang nama yang ditentukan tidak dijumpai". Ralat ini biasanya disebabkan oleh fail kelas yang diimport tidak dirujuk dengan betul ruang nama. Artikel ini menerangkan cara menyelesaikan masalah ini dan menyediakan beberapa contoh kod. Mula-mula, mari kita lihat contoh mesej ralat biasa: Fatalerror:UncaughtError:C

50-80G baki ruang pada pemacu c adalah lebih sesuai. Memandangkan sistem akan menjana fail sampah, fail cache, dsb. pada masa hadapan, adalah disyorkan untuk menempah sekurang-kurangnya 50GB-80GB ruang untuk pemacu C jika anda tidak biasa memilih laluan semasa memasang perisian dan tidak membersihkannya; komputer anda dengan kerap, maka sekurang-kurangnya 100GB diperlukan .

Rangka kerja F3 ialah rangka kerja PHPWeb yang ringkas, mudah digunakan, fleksibel dan boleh diperluaskan. Mekanisme ruang nama (Namespace)nya memberikan kita struktur kod yang lebih standard, lebih mudah dibaca dan lebih jelas. Dalam artikel ini, kami akan meneroka cara menggunakan ruang nama dalam rangka kerja F3. 1. Apakah ruang nama? Ruang nama sering digunakan untuk menyelesaikan masalah konflik penamaan dalam PHP Ia boleh merangkum satu atau lebih kelas, fungsi atau pemalar dalam ruang nama, yang bersamaan dengan menambah awalan kepada mereka. contoh

Seperti yang kita sedia maklum, jika cakera sistem yang diduduki terlalu besar selepas pemasangan sistem selesai, ia boleh menyebabkan sistem ketinggalan, kelewatan dan juga kehilangan fail. Oleh itu, sebelum anda memasang sistem win11, anda perlu tahu berapa banyak ruang pemacu C yang diperlukan untuk menaik taraf win11 Mari kita lihat dengan editor. Berapa banyak ruang pemacu C diperlukan untuk menaik taraf win11: Jawapan: Menaik taraf win11 memerlukan 20-30GB ruang pemacu C. 1. Menurut keperluan konfigurasi win11 Microsoft, anda dapat melihat bahawa pemasangan win11 memerlukan ruang cakera keras 64GB. 2. Tetapi sebenarnya, secara umumnya, tidak memerlukan ruang yang begitu besar. 3. Mengikut maklum balas daripada pengguna yang telah memasang win11, peningkatan win11 memerlukan kira-kira 20-30GB ruang pemacu C. 4. Tetapi jika pintu kita hanya mempunyai

Redis ialah pangkalan data storan nilai kunci berprestasi tinggi sumber terbuka. Apabila menggunakan Redis untuk penyimpanan data, kita perlu mempertimbangkan reka bentuk ruang nama utama dan mekanisme tamat tempoh untuk mengekalkan prestasi dan integriti data Redis. Artikel ini akan memperkenalkan idea reka bentuk dan kaedah pelaksanaan ruang nama dan mekanisme tamat tempoh Redis. 1. Idea reka bentuk ruang nama Redis Dalam Redis, kekunci boleh ditetapkan sewenang-wenangnya. Untuk memudahkan pengurusan dan perbezaan jenis data yang berbeza, Redis memperkenalkan konsep ruang nama. kehidupan

C++ ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas Ia mempunyai fleksibiliti dan skalabiliti yang tinggi, tetapi ia juga memerlukan pembangun untuk menguasai peraturan tatabahasanya dengan ketat untuk mengelakkan ralat. Salah satu ralat biasa ialah "penggunaan ruang nama yang tidak ditentukan". Artikel ini menerangkan maksud ralat ini, sebab ia berlaku dan cara membetulkannya. 1. Apakah kegunaan ruang nama yang tidak ditentukan? Dalam C++, ruang nama ialah cara mengatur kod yang boleh diguna semula untuk memastikan ia modular dan boleh dibaca. Fungsi dengan nama yang sama boleh dibuat menggunakan ruang nama
