我目前正在考虑创建一个抽象类Building
。然后,我希望使用多个不同类型的Building
来使用数据库中的属性继承此摘要。
继承我通常会有:
abstract class Building {
protected
$id,
$name,
$cost;
public function getName() { // return name }
}
class CoffeeShop inherits Building {
protected $id = 2, $name = 'Coffee Shop', $cost = '£15';
public function sellCoffee() { // sell it }
}
class ConferenceCentre inherits Building {
protected $id = 2, $name = 'Conference Centre', $cost = '£10';
public function bookRoom() { // book it }
}
非常标准,一个标准蓝图构建类,定义其他人应该继承和声明的内容。
假设有over 100 different building types
...其中一些是非常标准的,但它们的所有属性都在database
中定义,允许管理员进入并更改它name, costs, requirements
等等其中可能不需要定义任何特殊功能,但如果将来需要定义该功能将会很酷。
是否可以进入数据库并使用其属性和类型填充/创建对象,而无需先定义实际文件?如果我要实际创建文件,那么它是手动工作,我绑定到文件系统而不是存储在数据库中的实际建筑物。
然后我可以做类似的事情:
abstract class Building { // blah }
// Loop through DB to create objects that inherit the building class (factory?)
$building = new BuildingFactory('CoffeeShop');
// Random function that hints of the type (despite class file not existing)
public function (CoffeeShop $cs) { // Do stuff }
// Random test of type
if (gettype($building) == 'CoffeeShop') { // Do stuff }
我想问题是......有没有办法在不创建实际文件的情况下创建类。我想能够检查该文件是否确实存在,并在需要时添加自定义函数。
否则我必须创建100多个文件并让工厂将它们拉起并填入。
谢谢,Dominic
答案 0 :(得分:3)
如果不编写定义,则无法定义类。任何计算机语言都是如此,对PHP来说也是如此。
您可以将代码放入数据库中,也可以根据从数据库中提取的数据生成代码。
但是,当你接近eval
(这将用于那些)时,如果你在创建设计时提出正确的问题,通常会更有价值。
我觉得你总是拥有相同的对象,但它只有一些不同的数据。
而且我不确定这些对象必须具有多少不同的功能。您还没有分享有关应用程序的一般结构和基础域逻辑的大量信息,因此在第一个答案中很难说清楚。