【问题标题】:how laravel extends class without including themlaravel 如何在不包含它们的情况下扩展类
【发布时间】:2016-03-30 19:59:42
【问题描述】:

在我开始使用 Laravel 之后,我在 php 中遇到了一个名为“命名空间”的主题。在尝试理解命名空间时,我发现要在命名空间下扩展一个类,我需要在当前页面中包含该类。像下面这样:

目录'..\teacher\Teacher.php'

    namespace Teacher;

    class Teacher{
       public $headTeacher='mr X';

   }

为了扩展我需要包含该页面以及使用命名空间

目录'..\studnet\student.php'

use \Teacher\Teacher;  //use the namespace


include('../teacher/Teacher.php'); // include the page

   class mathTeacher extends Teacher{

    public function headTeacherName(){
       echo $this->headTeacher;
    }

   }

  $student=new mathTeacher();
  $student->headTeacherName();

我想知道 Laravel 如何只使用命名空间来包含类。就像我创建一个名为“userController”的控制器一样。页面结构是

namespace App\Http\Controllers;  

class userController extends Controller{

}

他们从未包含拥有 'controller' 类的 php 页面。但他们能够以某种方式扩展它。我也可以通过使用use Viewuse Auth 命令来使用"View" ,"Auth"。它是如何完成的?如何使用我提供的代码实现相同的功能?提前致谢。

【问题讨论】:

  • 大多数框架都使用自动加载器。
  • 每个请求背后都有一个很大的过程。例如,当您访问 index.php 时,laravel 会加载所有必要的类,以让像您和我这样的人使用它们而无需手动包含它们。如果您想稍微了解一下这种行为,请使用名为“composer”的工具制作您的第一个“hello world”项目

标签: php laravel namespaces


【解决方案1】:

Laravel 使用 composer.php 来自动加载类。自动加载目录中的所有类都将被预加载。因此,您可以只使用命名空间并在应用程序的任何位置使用。

Learn more about composer,composer 配置可以在应用程序根路径下的 composer.json 中找到

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多