当前位置: 首页 > 文档资料 > Laravel 入门教程 >

命名空间(Namespaces)

优质
小牛编辑
134浏览
2023-12-01

命名空间用于各种编程语言,以创建一组独立的变量,函数和类。 程序可能包含各种功能,这可能会导致与现有功能发生冲突。 命名空间在避免此类冲突方面发挥着关键作用。 本章将详细介绍命名空间及其在Laravel中的用法。

命名空间声明

命名空间可以定义为一个元素类,其中每个元素都具有该关联类的唯一名称。 它可以与其他类中的元素共享。

您可以声明一个命名空间,如下面给出的语法所示 -

use <namespace-name>;

请注意, use关键字允许开发人员缩短命名空间。 Laravel中使用的默认命名空间是app ,但是用户可以更改命名空间以与Web应用程序匹配。

您可以使用artisan命令创建用户定义的命名空间,如下所示 -

php artisan app:name xnip

在给出上述命令后,您可以观察输出,如下面的屏幕截图所示 -

选择Git

创建的命名空间可以包括可以在控制器和各种类中使用的各种功能。 在控制器和内核中使用命名空间创建的代码,包括app/console/kernel.phpapp/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, DispatchesJobsValidatesRequests

使用关键字

命名空间发生在当前类的位置。 如我们的示例中所述,我们已将xnip声明为我们的命名空间,它位于app文件夹中。 声明的名称空间将是App\Tutorialpoint 。 只要您想使用该类,就应该使用use关键字。

使用use关键字的语法如下所示 -

use xnip\Http\Controllers\Controller;