gpt4 book ai didi

php - 匿名类构造

转载 作者:可可西里 更新时间:2023-10-31 23:05:43 30 4
gpt4 key购买 nike

我需要一个在 PHP 上创建匿名类的想法。我不知道我该如何工作。

查看我的限制:

  • 在 PHP 上你不能创建匿名类,比如匿名函数(比如 class {});
  • 在 PHP 上你没有类作用域(命名空间除外,但它在下面有同样的问题);
  • 在 PHP 上,您不能使用变量来指定类名(如 class $name {});
  • 我无权安装 runkit PECL。

我需要什么,为什么:

好吧,我需要创建一个名为 create_class() 的函数,它接收一个键名和一个匿名类。它对我很有用,因为我想使用 PHP 无法接受的不同名称类符号。例如:

<?php

create_class('it.is.an.example', function() {
return class { ... }
});

$obj = create_object('it.is.an.example');

?>

所以,我需要一个接受这种用途的想法。我需要它,因为在我的框架上我有这条路径:/modules/site/_login/models/path/to/model.php。因此,model.php 需要声明一个名为 site.login/path.to.model 的新类。

调用 create_object() 如果内部缓存有一个 $class 定义(比如 it.is.an.example 它只是返回新类对象。如果没有,需要加载。所以我将使用 $class 内容快速搜索什么是类文件。

最佳答案

在 PHP 7.0 中会有 anonymous classes .我不完全理解您的问题,但您的 create_class() 函数可能如下所示:

function create_class(string $key, array &$repository) {
$obj = new class($key) {
private $key;
function __construct($key) {
$this->key = $key;
}
};
$repository[$key] = $obj;
return $obj;
}

这将实例化一个具有匿名类类型的对象并将其注册到 $repository 中。要取出对象,您可以使用创建它的 key :$repository['it.is.an.example']

关于php - 匿名类构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726396/

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