Laravel 中声明的命名空间在哪里?
Where are namespaces declared in Laravel?
我在 php 中了解到,要使用命名空间,您必须先声明或包含。
<?php
namespace namespace_01;
function f1()
{
echo 'this is function';
}
use namespace_01 as test_namespace;
test_namespace\f1();
?>
几乎所有 laravel 代码都使用名称空间。但是它们在哪里定义的?
示例,
当我创建控制器时。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class controller1 extends Controller
{
//
}
Illuminate\Http\Request
定义在哪里?
这些是在Laravel Framework. Laravel uses composer中找到的,可以自动加载这些包。您可以在 /vendor
文件夹中找到源代码,这是作曲家放置包的地方。
从 vendor/laravel/framework/src/Illuminate/Http/Request.php
打开文件
在那里你会看到命名空间在顶部声明为 namespace Illuminate\Http;
并且 class 名称是 Request
您可以在 composer.json
文件中看到
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\": "app/"
}
},
因此 App 文件夹中的所有 classes 都会自动加载作曲家和供应商文件。您不需要每次都包含文件。
我在 php 中了解到,要使用命名空间,您必须先声明或包含。
<?php
namespace namespace_01;
function f1()
{
echo 'this is function';
}
use namespace_01 as test_namespace;
test_namespace\f1();
?>
几乎所有 laravel 代码都使用名称空间。但是它们在哪里定义的?
示例,
当我创建控制器时。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class controller1 extends Controller
{
//
}
Illuminate\Http\Request
定义在哪里?
这些是在Laravel Framework. Laravel uses composer中找到的,可以自动加载这些包。您可以在 /vendor
文件夹中找到源代码,这是作曲家放置包的地方。
从 vendor/laravel/framework/src/Illuminate/Http/Request.php
在那里你会看到命名空间在顶部声明为 namespace Illuminate\Http;
并且 class 名称是 Request
您可以在 composer.json
文件中看到
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\": "app/"
}
},
因此 App 文件夹中的所有 classes 都会自动加载作曲家和供应商文件。您不需要每次都包含文件。