2017-04-23 21 views
1

我正在研究一个库来连接到Eventbrite API。我已经足够通用了,许多二级业务对象都是空类。话虽如此,当我实例化这些对象时,我仍然希望他们注册为不同的类。我认为class_alias会是一条路,但似乎原来的课是做var_dump时返回的东西。PHP 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

你为什么要这么做? –

+1

@ConstantinGALBENU:因为“GenericClass”对开发人员来说不如“SpecicClass”有帮助,但是也有一堆从“GenericClass”继承而来的实际上并没有扩展或覆盖功能的类。 –

+0

我试图了解你的问题,但我失败了。你需要“特殊班”,但你不需要他们。这很令人困惑 –

回答

0

您可以通过使用eval无码puting到一个文件中创建一个类的实例:

// 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(); 

附:如果你没有找到没有eval另一种解决办法,那么你应该考虑这个报价:

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

+0

嗯...采取反对是因为有一个性能打击......? –

+0

我不明白。你知道创建一个类的其他解决方案,而不需要实际创建一个包含该类的文件吗? –

+0

唯一可能变坏的是该类已经存在,所以我更新了答案 –