命名空间 - use的类名与当前类名相同

  • 作者:KK

  • 发表日期:2019.3.29


问题

先看以下代码:

namespace xxx;

use yyy\Apple;

class Apple{
	public function test(){
		Apple::run();
	}
}

定义一个 xxx\Apple 类,又引用一个 yyy\Apple 类,这样搞是不行的,因为Apple::run都不知道要调用哪个 Apple 类的方法。


解决办法

as关键词给引用的类起一个别名:use yyy\Apple as YyyApple;这个别名可以自己随便起的,比如:

namespace xxx;

use yyy\Apple as AppleModel;

class Apple{
	public function test(){
		AppleModel::run();
	}
}

用的时候也得以别名来引用哦。


其实遇到两个 use 的类在前缀命名空间不同,后面的类名相同时都可以通过 as 来起不同的别名来区分开为,核心就是避免冲突。