一、use的概念
在PHP里,利用use語句可以引入全局命名空間或者命名空間中的一個或多個類,使得可以方便的在腳本中使用外部的類。使用 use 語句是必須的,因為在 PHP 中沒有未限定命名空間的函數或常量調用方法。在同樣的命名空間中可以直接使用該名稱,但不同的命名空間中的名稱,必須使用其完全限定名稱(包含其命名空間前綴的名稱)來訪問。
二、use的語法
使用use時,可以通過 “use namespace\Class as AnotherClass”指定要引入的類之外,也可以設置別名;use語句需要放到命名空間聲明的後面,但是在類聲明語句之前。use語句可以空行分隔以提高代碼可讀性。
use \Namespace\Class; use \Namespace\Class as ClassName;
三、use的實例
下面是一個簡單的示例,演示了如何使用use語句:
namespace Foo; use Bar\Baz\ClassB; // ClassB 類現在可以直接使用 $bar = new ClassB;
命名空間Foo在最前面聲明,use語句在Foo聲明之後。現在可以直接創建一個Baz\ClassB對象,不需要再使用完全限定名稱。
四、use的常見用法
1. 引入不同命名空間下的類
Example:
namespace App\Http\Controllers; use App\User; use App\Repositories\UserRepository; class UserController extends Controller { protected $user; protected $userRepo; public function __construct(User $user, UserRepository $userRepo) { $this->user = $user; $this->userRepo = $userRepo; } }
上面的例子中,User和UserRepository這兩個類是在不同的命名空間下,使用use語句來引入它們。由於use語句的存在,我們在構造函數時就可以直接使用User和UserRepository,而不需要使用其完全限定名稱。
2. 引用類的別名
Example:
namespace App\Http\Controllers; use Illuminate\Http\Request as RequestData; use App\Http\Controllers\Controller as BaseController; class UserController extends BaseController { public function index(RequestData $request) { // ... } }
request類使用了別名RequestData,BaseController使用了別名BaseController,以提高代碼的可讀性。
3. 引入命名空間下的所有類
Example:
namespace App\Http\Controllers; use Illuminate\Support\Facades\View; class UserController extends Controller { public function index() { $view = View::make('user.profile'); // ... } }
在上面的例子中,use語句引入了Illuminate\Support\Facades中的View類,即通過該語句導入了該命名空間下的所有類。
五、use的注意事項
1. use語句必須在類的內部的頂部聲明。
2. use語句包含在命名空間之內。
3. 可以同時對一個命名空間或命名空間下的多個類定義別名。
4. 在從另一個命名空間中導入名稱時,可以將名稱定義為直接類名稱,讓 PHP 在當前命名空間中查找該名稱的類。
5. 可以對導入的名稱使用namespace操作符來進行限制(例如,將命名空間分配給別名)。
六、總結
使用use語句可以方便的在腳本中使用外部的類。在遇到類名相同的情況時,可以用use語句為其中一個類設置別名,提高代碼的可讀性。但是,在使用use語句時需要遵循它的語法和注意事項,以免導致代碼出錯。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/304388.html