使用命名空间加载类的正确方法是什么?这样我就不必在每个文件中包含自动加载?

您好,我有一项任务要做,即按名称空间对类进行分类。我的要求是加载类而不包含 autoload.php 的 require 关键字。


<?php

namespace classes;

class test {

public function getPrint(){

    echo "Hello";

}

}

这是带有命名空间的类。这是类函数的代码。


require_once 'classes/autoload.php';

use classes\test2;


$dt = new test();

$dt2 = new test2();



$dt->getPrint();

echo $dt2->Okay();

我正在自动加载课程。我的问题是使用以下方式加载类


require_once 'classes/autoload.php';

这条线。我必须在每个代码文件中使用这一行来加载类。加载类的正确方法是什么。所以我不必包括


require_once 'classes/autoload.php';

每个文件中都有这个吗?


白板的微信
浏览 99回答 2
2回答

青春有我

通常的工作方式是使用每个请求都会经过的一个引导文件。这通常还需要将路由移至 PHP 代码中;即,您通常不会example.com/foo/bar.php简单地调用 file foo/bar.php,而是使用漂亮的 URL(例如 )example.com/foo/bar,然后在 PHP 代码中找出foo/bar确切的含义以及它应该执行的操作(尽管这是相当可选的,由您决定)。首先,您设置一个.htacess这样的文件,或者在您的 Web 服务器配置文件中添加等效的配置:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ bootstrap.php这会导致您的 Web 服务器调用bootstrap.php其文件实际上不存在的任何和所有请求(即css/style.css仍按原样提供服务,但foo/bar不是实际文件,而是会调用bootstrap.php)。然后,bootstrap.php您需要require所有必要的文件,例如自动加载器,也许还有配置文件,然后运行您想要的任何类、函数或文件:<?phprequire_once 'classes/autoload.php';$request = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);require "$request.php";上面是获取请求的 URI(例如/foo/bar)并将其用于requirePHP 文件的简单示例。这是非常幼稚的并且有潜在危险,因此您需要在实际使用中进行一些更多的自定义处理。

慕虎7371278

您可以创建一个需要您要使用的所有其他文件的文件,包括自动加载:<?phprequire_once('classes/autoload.php');require_once('file1.php');require_once('file2.php');...然后您就不需要要求自动加载,因为文件已经附加在它后面。
打开App,查看更多内容
随时随地看视频慕课网APP