这是我的php文件夹/文件结构:
mvc
controller
login.class.php
model
login.class.php
lib
login.class.php
core
controller.class.php
model.class.php
core.class.php
core.class.php代码
<?php
class core
{
public static function load()
{
require_once('lib.class.php');
require_once('controller.class.php');
require_once('model.class.php');
}
}
core::load();
?>
我不知道在哪里设置命名空间来执行以下操作:
\LIB\login.class.php
\CONTROLLER\login.class.php
\MODEL\login.class.php
谢谢你:)
答案 0 :(得分:2)
您必须将命名空间定义为每个文件(namespace my\namespace;
)中的第一个语句。当命名空间与文件夹匹配时,您可以使用以下自动加载器自动加载所需的文件:
spl_autoload_register(function ($className) {
$namespaces = explode('\\', $className);
if (count($namespaces) > 1) {
$classPath = APPLICATION_BASE_PATH . implode('/', $namespaces) . '.class.php';
if (file_exists($classPath)) {
require_once($classPath);
}
}
});
答案 1 :(得分:1)
命名空间声明位于文件的顶部:
<?php
namespace Foo;
答案 2 :(得分:0)
mvc
controller
login.class.php
model
login.class.php
lib
login.class.php
index.php
<强> MVC /控制器/ login.class.php 强>
<?php
namespace controller;
require_once('mvc/model/login.class.php');
class login
{
public function __construct()
{
$login = new \model\login();
}
}
?>
<强> MVC /模型/ login.class.php 强>
<?php
namespace model;
require_once('lib/login.class.php');
class login
{
public function __construct()
{
$login = new \lib\login();
}
}
?>
<强> LIB / login.class.php 强>
<?php
namespace lib;
class login
{
public function __construct()
{
// core class instance
$login = new \DOMDocument();
}
}
?>
<强>的index.php 强>
<?php
require_once('mvc/controller/login.class.php');
$login = new \controller\login();
?>