命名空间(Namespaces)
优质
小牛编辑
130浏览
2023-12-01
命名空间用于各种编程语言,以创建一组独立的变量,函数和类。 程序可能包含各种功能,这可能会导致与现有功能发生冲突。 命名空间在避免此类冲突方面发挥着关键作用。 本章将详细介绍命名空间及其在Laravel中的用法。
命名空间声明
命名空间可以定义为一个元素类,其中每个元素都具有该关联类的唯一名称。 它可以与其他类中的元素共享。
您可以声明一个命名空间,如下面给出的语法所示 -
use <namespace-name>;
请注意, use关键字允许开发人员缩短命名空间。 Laravel中使用的默认命名空间是app ,但是用户可以更改命名空间以与Web应用程序匹配。
您可以使用artisan命令创建用户定义的命名空间,如下所示 -
php artisan app:name xnip
在给出上述命令后,您可以观察输出,如下面的屏幕截图所示 -
创建的命名空间可以包括可以在控制器和各种类中使用的各种功能。 在控制器和内核中使用命名空间创建的代码,包括app/console/kernel.php和app/Http/controller.php ,如下所示 -
Kernel.php
<?php
namespace xnip\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule){
// $schedule->command('inspire')
// ->hourly();
}
/**
* Register the Closure based commands for the application.
*
* @return void
*/
protected function commands(){
require base_path('routes/console.php');
}
}
请注意,调度和命令等功能有助于调度Cron作业和其他功能的方法。
Controller.php
<?php
namespace xnip\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
控制器充当模型和视图之间的中介。 对于我们创建的名为xnip的命名空间,它们将用于控制器controller.php核心文件中。 使用Http\Controllers正确初始化命名空间。
创建的命名空间使用各种其他命名空间,如上面代码中提到的AuthorizesRequests, DispatchesJobs和ValidatesRequests 。
使用关键字
命名空间发生在当前类的位置。 如我们的示例中所述,我们已将xnip声明为我们的命名空间,它位于app文件夹中。 声明的名称空间将是App\Tutorialpoint 。 只要您想使用该类,就应该使用use关键字。
使用use关键字的语法如下所示 -
use xnip\Http\Controllers\Controller;