当前位置: 首页 > 知识库问答 >
问题:

原始PHP vs Laravel框架:包含文件

酆景辉
2023-03-14

我正在学习拉威尔的基本概念,我有一个概念问题。

在原始PHP中:

当我想创建一个类的对象(例如用户),这是在一个不同的目录(例如app\user.php)与命名空间(例如命名空间App),我必须包括该文件首先(使用包括'app/user.php'),然后添加'use'(使用App\User)。

<?php

include 'app/user.php'; // including the file

use App\User;

$user = new User('John');

然而,在Laravel中,我看到它们根本不包含任何文件。他们只需添加“use”关键字(use App\User.php),然后就可以实例化它的一个对象。($user=user::find(1))。

<?php

namespace App\Http\Controllers;

use App\User;

class UserController extends Controller
{

public function index()
{
    $user = User::find(1);
}
}

有人能解释一下这是怎么发生的吗?

共有1个答案

空正豪
2023-03-14

这不是laravel功能,这是从PHPautoload_class。

在https://www.php.net/manual/en/language.oop5.autoload.php

spl_autoload_register()函数注册任意数量的自动加载器,如果类和接口当前未定义,则允许自动加载它们。通过注册自动加载器,PHP得到了最后一次机会来加载类或接口,以免它因错误而失败。

所有类都存在于composer自动加载文件中:

vendor/composer/autoload_classmap.php 
 类似资料:
  • 将只填充Enabled属性(下图),而不填充Application或CustomVariableGroup属性(下图)。我该怎么做?

  • 原型和框架工具 创建原型和框架: Balsamiq Mockups [$] Justinmind [$] UXPin [free to $] 合作/展示: InVision [free to $] myBalsamiq [$] conceptboard [free to $]

  • 问题内容: 我正在HTML页面中加载,并尝试使用Javascript访问其中的元素,但是当我尝试执行代码时,出现以下错误: 您能否帮助我找到解决方案,以便我可以访问框架中的元素? 我正在使用此代码进行测试,但徒劳无功: 问题答案: 同源政策 您无法使用JavaScript访问其他来源的内容,如果可以的话,这将是一个巨大的安全漏洞。对于同源策略,浏览器会阻止脚本尝试访问来源不同的框架。 如果未保留地

  • 我需要使用JPA存储一个复杂的树状对象结构。 有一个“顶级”类A,因此我可以在其上执行CASCADE. ALL,但我对类B的子对象和HashMap字段有问题。 映射的“键”是对象本身的哈希代码,存储为“值”。 当我级联持久化一个对象B时,数据库中的“键”列总是“null”(为什么?),即使对象有一些键值对。 我尝试了@MapKey之类的方法,但当我稍后从数据库加载对象时,键值不再是hashcode

  • SSI 指令为用户提供在 Web 服务器处理之前将一个文件的内容插入到另一个文件的方法。ASP 只使用这一机制的 #include 指令。要在 .asp 文件中插入一个文件,使用下面的语法: <!--#include virtual | file ="filename"--> virtual 和 file 关键字指示用来包含该文件的路径的类型,filename 是您想包含的文件的路径和名称。 被包