如何在PHP中使用关键字“use”,并且可以使用它导入类?
我有一个类Resp的文件。 path是: 
 C:\xampp\htdocs\One\Classes\Resp.php 
 我在这个目录中有一个index.php文件: 
 C:\xampp\htdocs\Two\Http\index.php 
 在这个index.php文件中,我想实例化一个类Resp 。 
 $a = new Resp(); 
 我知道我可以使用require或include关键字来包含一个类的文件: 
 require("One\Classes\Resp.php"); // I've set the include_path correctly already ";C:\xampp\htdocs". It works. $a = new Resp(); 
 但是我想导入类而不使用require或include 。 我想了解如何use关键字的作品。 我试过这些步骤,但没有任何工作: 
 use One\Classes\Resp; use xampp\htdocs\One\Classes\Resp; use htdocs\One\Classes\Resp; use One\Classes; use htdocs\One\Classes; /* nothing works */ $a = new Resp(); 
它说:
 Fatal error: Class 'One\Classes\Resp' not found in C:\xampp\htdocs\Two\Http\index.php 
 关键字use如何工作? 我可以用它来导入类吗? 
  use不包括任何东西。 它只是将指定的名称空间(或类)导入当前作用域 
如果你想要自动加载类 – 阅读有关自动加载
 不,您不能use关键字导入类。 你必须使用include / require语句。 即使你使用PHP自动加载器,自动加载器也不得不使用include或require 。 
使用关键字的目的:
 考虑一个你有两个同名的类的例子, 你会发现这很奇怪,但是当你使用一个大的MVC结构时,就会发生。 所以如果你有两个同名的类,把它们放在不同的名字空间中。 现在考虑什么时候你的自动加载器正在加载这两个类(按require ),你将要使用类的对象。 在这种情况下,编译器会混淆在两个类中加载哪个类对象。 为了帮助编译器做出决定,可以使用use语句,以便决定使用哪一个。 
 现在主要的框架使用include或require通过composer和psr 
1) composer php
2) PSR-4自动装载机
 通过它们可以进一步帮助你。 您也可以使用别名来处理确切的类。 假设你有两个同名的类,比如说Mailer有两个不同的名字空间: 
 namespace SMTP; class Mailer{} 
和
 namespace Mailgun; class Mailer{} 
如果你想同时使用两个Mailer类,那么你可以使用别名。
 use SMTP\Mailer as SMTPMailer; use Mailgun\Mailer as MailgunMailer; 
如果你想访问这些类对象,那么在你的代码后面,你可以执行以下操作:
 $smtp_mailer = new SMTPMailer; $mailgun_mailer = new MailgunMailer; 
它会引用原来的类。
 无论如何,你将不得不包含/需要类,否则PHP将不知道名称空间。 
 尽pipe你不需要在同一个文件中执行它。 例如,您可以在引导文件中执行此操作。  (或使用自动加载器,但这不是实际的话题) 
这个问题很可能是你需要使用一个自动加载器来取得这个类的名字(在这种情况下,用'\'来分隔)并将它映射到一个目录结构。
你可以看看这篇关于PHP的自动加载function的文章。 这种types的function在框架中已经有很多实现。
我以前实际上已经实现了一个。 这是一个链接 。
我同意格林,Symfony需要命名空间,所以为什么不使用它们?
这是一个示例控制器类的启动方式:
命名空间Acme \ DemoBundle \ Controller;
使用Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller;
class WelcomeController extends Controller {…}
  use关键字用于PHP中的别名,并且不导入类。 这真的有帮助 
  1)在不同的名称空间中有相同名称的类时 
  2)避免一次又一次地使用真正的长名称。 
我可以用它来导入类吗?
 除了上面的例子,你不能这样做。 你也可以使用类内的关键字use来导入特征 ,如下所示: 
 trait Stuff { private $baz = 'baz'; public function bar() { return $this->baz; } } class Cls { use Stuff; // import traits like this } $foo = new Cls; echo $foo->bar(); // spits out 'baz'