В настоящее время я смотрю на создание абстрактного класса 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 }
}
Довольно стандартно, aстандартный класс построения плана, который определяет, что другие должны наследовать и объявлять.Допустим, есть 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 файлов, чтобы фабрика подтянула их и заполнила их.
Спасибо, Доминик