PHP class_alias,var_dump作为该类

时间:2017-04-23 11:17:10

标签: php class alias

我正在使用一个库连接到Eventbrite API。我已经足够通用了,很多二级业务对象都是空类。话虽如此,当我实例化那些对象时,我仍然希望它们注册为不同的类。我认为class_alias是可行的方法,但似乎原始类是执行var_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 {}

我正在拍摄的内容:

$attendee = new Attendee();
var_dump($attendee);
// Attendee {}

我真的想删除支持通用类的空类,同时注册新的动态生成的类。

这是否可能没有严重的性能损失?

注意:首选PHP 5.4或更高版本,但PHP 7也不错。

1 个答案:

答案 0 :(得分:0)

您可以使用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 ();

P.S。如果您没有找到没有eval的其他解决方案,那么您应该考虑这个引用:

  

如果eval()是答案,你几乎肯定会问错   题。 - Rasmus Lerdorf,PHP的BDFL