我正在使用一个库连接到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也不错。
答案 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