PHP类别名,var_dump作为该类

PHP类别名,var_dump作为该类,php,class,alias,Php,Class,Alias,我正在开发一个连接到Eventbrite API的库。我已经使它变得足够通用,以至于许多二级业务对象都是空类。尽管如此,当我实例化这些对象时,我仍然希望它们注册为不同的类。我原以为class\u alias是一个不错的选择,但在执行var\u dump时,似乎返回的是原始类 当前: <?php namespace Project; class_alias( '\\Project\\Classes\\Aliaser', '\\Project\\Classes\\Atte

我正在开发一个连接到Eventbrite API的库。我已经使它变得足够通用,以至于许多二级业务对象都是空类。尽管如此,当我实例化这些对象时,我仍然希望它们注册为不同的类。我原以为
class\u alias
是一个不错的选择,但在执行
var\u dump
时,似乎返回的是原始类

当前:

<?php

namespace Project;

class_alias(
    '\\Project\\Classes\\Aliaser', 
    '\\Project\\Classes\\Attendee',
    true
);

use Project\Classes\Aliaser;
use Project\Classes\Attendee;

$attendee = new Attendee();
var_dump($attendee)
// Aliaser {}
我真的希望删除空类,而使用泛型类,同时注册新的动态生成的类

如果没有严重的性能损失,这是可能的吗


注意:首选PHP5.4或更高版本,但PHP7也不错。

您可以使用
eval
创建类的实例,而无需将代码放入文件:

// define the class if it does not exists
if (!class_exists (\Eightfold\Eventbrite\Classes\ApiResource\Question::class)) {
    eval ( 'class Question extends \Eightfold\Eventbrite\Classes\ApiResource {} ');
}

//create instance
$instance = new \Eightfold\Eventbrite\Classes\ApiResource\Question ();

如果你没有找到另一个解决方案,没有<代码> EVA/CODE >,那么你应该考虑这个引用:

如果eval()是答案,那么您几乎肯定是问错了 问题。-拉斯马斯·勒多夫,PHP的BDFL


通过使用
eval
,可以创建类的实例,而无需将代码放入文件:

// define the class if it does not exists
if (!class_exists (\Eightfold\Eventbrite\Classes\ApiResource\Question::class)) {
    eval ( 'class Question extends \Eightfold\Eventbrite\Classes\ApiResource {} ');
}

//create instance
$instance = new \Eightfold\Eventbrite\Classes\ApiResource\Question ();

如果你没有找到另一个解决方案,没有<代码> EVA/CODE >,那么你应该考虑这个引用:

如果eval()是答案,那么您几乎肯定是问错了 问题。-拉斯马斯·勒多夫,PHP的BDFL


@ConstantinGALBENU:因为“GenericClass”对开发人员的帮助不如“SpecicClass”,但如果有一堆继承自“GenericClass”的类,并且实际上没有扩展或覆盖功能,这也会让人感到困惑。我试图理解您的问题,但我失败了。你需要“特殊课程”,但你不想要。这让人困惑,给我一个别名的例子,这对你很有帮助,这样我就可以想出一个solution@ConstantinGALBENU:-看一看那里(现在不提问题)。这个类是空的,很可能不需要做任何超出其父类已经做的事情;因此,它是一个空文件。到达那里的路径是获取一个事件
$event
,然后链接到那里
$event->questions
。有没有一种方法可以返回具有相同名称空间的实例,但类文件实际上不存在?如果不是,那很酷,更多的是好奇。你为什么要这样做?@ConstantinGALBENU:因为“GenericClass”对开发人员的帮助不如“SpecicClass”,但如果有一堆继承自“GenericClass”的类,并且实际上没有扩展或覆盖功能,这也会让人感到困惑。我试图理解你的问题,但我失败了。你需要“特殊课程”,但你不想要。这让人困惑,给我一个别名的例子,这对你很有帮助,这样我就可以想出一个solution@ConstantinGALBENU:-看一看那里(现在不提问题)。这个类是空的,很可能不需要做任何超出其父类已经做的事情;因此,它是一个空文件。到达那里的路径是获取一个事件
$event
,然后链接到那里
$event->questions
。有没有一种方法可以返回具有相同名称空间的实例,但类文件实际上不存在?如果不是的话,那很酷,更多的是好奇。嗯……投票被否决是因为有一个表演命中…?我不明白。你知道创建一个类而不实际创建一个包含该类的文件的其他解决方案吗?如果你没有找到另一个没有“代码> EVAeval给出解决方案。嗯……否决投票是因为性能受到影响…?我不明白。你知道创建一个类而不实际创建一个包含该类的文件的其他解决方案吗?如果你没有找到另一个没有“代码> EVAeval给出解决方案,除非没有其他方法。