gpt4 book ai didi

PHP在另一个命名空间的类中的方法中使用命名空间类

转载 作者:行者123 更新时间:2023-12-04 16:56:23 25 4
gpt4 key购买 nike

是否有可能以某种方式在另一个命名空间内的另一个类的方法中实例化一个命名空间内的类?并从变量实例化请求的类?

示例 :

要从 loader-class 加载的类:

namespace application/pages;

class loader
{
private function __construct()
{
echo 'Class loaded...';
}
}

装载机类:
namespace system/loader;

class loader
{
private $vars;

private function __construct($vars)
{
$this->vars = $vars;
}

private function load_class()
{
require(CLASSES . $this->vars['namespace'] . '/' . $this->vars['class'] . ".php");

use $this->vars['namespace'];
return new \$this->vars['namespace']\$this->vars['class']();
}
}

抱歉有点困惑的表述,但我想不出更好的方式来问这个问题。

谢谢。

最佳答案

这是加载命名空间的一般方法:
http://www.php.net/manual/en/function.spl-autoload.php

然而,使用 Composer 有一种更流行的方式来实现。 .

  • 下载 composer.phar 并在您的项目目录中运行:php composer.phar init
  • 在互动之后。
  • 在您的项目根目录中,创建一个 src目录然后将其添加到您的 composer.json 文件中,该文件生成:"autoload": { "psr-0": { "": "src/" } }

  • 您的 composer.json 文件现在应如下所示:
    {
    "name": "acme/sample",
    "authors": [
    {
    "name": "Person",
    "email": "person@example.com"
    }
    ],
    "minimum-stability": "dev",
    "autoload": {
    "psr-0": { "": "src/" }
    },
    "require": {

    }
    }
  • 运行:php composer.phar install ,这将生成一个供应商目录和一个自动加载脚本。
  • 创建您的主要加载 php 文件并在其中包含 autoload.php 文件。

  • 现在,您在 src 目录中的命名空间和供应商中的任何导入库都将暴露给您的应用程序。

    结帐 symfony/symfony-standard查看完整的框架示例。

    关于PHP在另一个命名空间的类中的方法中使用命名空间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113526/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com