是否有必要在 php 上包含超类?

Is it necessary to include superclasses on php?

我创建了两个 classes

teste.php

<?php

namespace Projeto;

use Pai\classepai;
//include 'classepai.php';

class teste extends classePai
{
    public function __construct()
    {
        echo 'classe teste<br>';
    }
}

classepai.php

<?php

namespace Pai;


class classepai
{
    public function __construct()
    {
        echo 'classe pai<br>';
    }
}

它 returns 给我一个错误,除非我取消注释 include 'classepai.php';

然后我从 Laravel(php 框架)class

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{...}

我的问题是 HttpKernel 如何在不包含的情况下进行扩展。

HttpKernelcomposer.json 中是必需的,在代码中使用 autoload.php 包含它。这就是为什么您不需要手动包含 HttpKernel 的原因。如果你想在 classeapi 上做同样的事情,你应该使用 namespace 和文件夹位置将它添加到 composer.json autoload.psr-4 部分。

示例:

{
    "autoload": {
        "psr-4": {
            "App\": "app/",
            "Pai\": "packages/pai/src",
        }
    }
}

然后 运行 命令 composer dump-autoload 你就可以像这样使用你的 classeapi 了:Pai\classeapi