php:如何在此结构中实现名称空间

发布于 2024-12-29 09:14:02 字数 632 浏览 1 评论 0原文

这是我的 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

谢谢:)

this is my php folder/file structure:

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 code

<?php
class core
{
    public static function load()
    {
        require_once('lib.class.php');
        require_once('controller.class.php');
        require_once('model.class.php');
    }
}
core::load();
?>

i don't know where to set namespaces to do something like this:

\LIB\login.class.php
\CONTROLLER\login.class.php
\MODEL\login.class.php

thank you :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

东风软 2025-01-05 09:14:02

您必须将命名空间定义为每个文件中的第一个语句 (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);
        }
    }
});

You have to define the namespace as the first statement in every file (namespace my\namespace;). When the namespace matches the folder you can use the following autoloader to automagically load the needed files:

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);
        }
    }
});
心奴独伤 2025-01-05 09:14:02

命名空间声明位于文件顶部:

<?php
namespace Foo;

Namespace declarations go at the top of the file:

<?php
namespace Foo;
月竹挽风 2025-01-05 09:14:02
mvc
    controller
        login.class.php
    model
        login.class.php
lib
    login.class.php

index.php

mvc/controller/login.class.php

<?php
namespace controller;
require_once('mvc/model/login.class.php');
class login
{
    public function __construct()
    {
        $login = new \model\login();
    }
}
?>

mvc/model/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();
    }    
}
?>

索引.php

<?php
require_once('mvc/controller/login.class.php');

$login = new \controller\login();
?>
mvc
    controller
        login.class.php
    model
        login.class.php
lib
    login.class.php

index.php

mvc/controller/login.class.php

<?php
namespace controller;
require_once('mvc/model/login.class.php');
class login
{
    public function __construct()
    {
        $login = new \model\login();
    }
}
?>

mvc/model/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();
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文