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() {} } ?>
kod fail fail2.php
<?php namespace Foo\Bar; include 'file1.php'; 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 ?>
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!