[英]What is the proper way of loading of classes using namespace. So that i don't have to include autoload in every file?
您好,我有一项任务要按其命名空间对 class 类执行。 我的要求是加载类而不包括 autoload.php 的 require 关键字。
<?php
namespace classes;
class test {
public function getPrint(){
echo "Hello";
}
}
这是带有命名空间的 class。 这是 class 函数的代码。
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';
每个文件中都有这个?
通常的工作方式是使用每个请求都经过的一个引导文件。 这通常也需要将路由移动到 PHP 代码中; 即,而不是example.com/foo/bar.php
只是简单地调用文件foo/bar.php
,你通常会使用漂亮的 URL ,比如example.com/foo/bar
,然后在你的 Z2FEC392304/fooC13 代码中找出什么foo/bar
bar.php确切的意思以及它应该做什么(尽管这是非常可选的,由您决定)。
首先你像这样设置一个.htacess
文件,或者在你的 web 服务器配置文件中添加一个等效的配置:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ bootstrap.php
这会导致您的 web 服务器为文件实际上不存在的任何和所有请求调用bootstrap.php
(即css/style.css
foo/bar
是一个实际文件,并且将调用但bootstrap.php
代替)。
在bootstrap.php
中,您require
所有必要的文件,例如自动加载程序,也许还有配置文件,然后运行 class、function 或您想要的文件:
<?php
require_once 'classes/autoload.php';
$request = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
require "$request.php";
以上是获取请求的 URI(例如/foo/bar
)并使用它来require
PHP 文件的简单示例。 这是非常幼稚且具有潜在危险的,因此您需要在实际使用中进行更多自定义处理。
您可以创建一个需要您要使用的所有其他文件的文件,包括自动加载:
<?php
require_once('classes/autoload.php');
require_once('file1.php');
require_once('file2.php');
...
然后你不需要自动加载,因为文件已经附加在它之后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.