PHP的use用法,一看就会!

以前不明白USE的用法,在网上查了半天,说的太高深,听不懂,所以这次用简单的理解来讲一下

比方说建三个文件。

第一个文件 A.php,里边有两个类,命名空间是 a/b/c;

namespace a/b/c;
class Apply{   
function get_info(){     
echo 'this is A Apply';   
} }
class C{   
function info(){     
echo 'this is info';   
} }  

第二个文件 B.php 命名空间 a/b/d;

namespace a/b/d;
class Apply{   
function get_info(){     
echo 'this is B Apply';   
} }

第三个文件 index.php ,用来使用上边两个文件的类。

比方说我们现在想实例化A.php里的类,该怎么实现呢?

首先要包含这个文件

namespace a/b/d;
class Apply{   
function get_info(){     
echo 'this is B Apply';   
} }

然后 use a/b/c;? 还是a/b/c/A? 起初我也是这么认为的。其实这是错的,use应该是这样的,命名空间/这个空间下你要实例化类的类名。比方说我们要实例化 A.php里的Apply类,那么 use a/b/c/Apply; 这就相当于引入这个类,接下来再 new Apply();调用里边的方法,跟平常是一样的。如果要实例化类C,就 use a/b/c/C;

注意:use不等于require_once或者include, use的前提是已经把文件包含进当前文件

有的人可能问了,那我不同的命名空间下,有相同的类名,在同一个文件中使用怎么办?
比方说我们上边的index.php,把A.php和B.php都包含进来,然后new Apply();这个时候是会报错的,解决方案就是起别名,比方说 use a/b/d/Apply as b; 此时我们new 的时候不应该写成 new Apply();而是new b();这样就不会发生冲突了。

本文链接:https://www.dnwfb.com/1559.html,转载请注明出处。
0

评论0

没有账号? 注册  忘记密码?