PHP5 и абстрактные классы. Отдельная копия переменных класса для каждого дочернего класса?

Посмотрим, смогу ли я описать это правильно …

У меня есть абстрактный класс, который, когда другие классы распространяются от него, я хотел бы, чтобы данные абстрактного класса были сброшены до нуля.

Идея состоит в том, что у меня есть куча классов, расширяющих ее и использующая таблицу MySQL для структуры данных. Я не хочу запрашивать БД с каждым экземпляром класса для определения данных класса («SHOW COLUMNS FROM tablename ).

Поэтому для каждого класса я бы хотел, чтобы это было для каждого: «Мы создали этот класс раньше? Если это так, мы знаем структуру класса, если нет, захватим столбцы таблицы и создадим класс, а также сохраним столбцы таблицы для позже использовать ".

Для проверки моей идеи я использовал следующее:

 $columns = array("Column 1", "Column 2", "Column 3"); abstract class AbstractClass { protected static $colFields = array(); public function __construct() { $this->setVars(); } private function setVars() { global $columns; if (count(self::$colFields) == 0) { var_dump("Array length is 0"); foreach ($columns as $key) { self::$colFields[] = $key; if (!isset($this->$key)) $this->$key = null; } } else { var_dump("Array length is not 0"); foreach (self::$colFields as $key) { $this->$key = null; } } } public function test() { var_dump($this); } } class ObjectA extends AbstractClass {}; class ObjectB extends AbstractClass {}; $objectAA = new ObjectA(); $objectAB = new ObjectA(); $objectAC = new ObjectA(); $objectAC->test(); $objectBA = new ObjectB(); $objectBB = new ObjectB(); $objectBC = new ObjectB(); $objectBC->test(); 

И вывод скрипта:

string (17) "Длина массива равна 0"
string (21) «Длина массива не равна 0»
string (21) «Длина массива не равна 0»
object (ObjectA) # 3 (4) {
[ "Имя класса": защита] =>
string (7) "ObjectA"
["Столбец 1"] =>
НОЛЬ
["Столбец 2"] =>
НОЛЬ
["Столбец 3"] =>
НОЛЬ
}
string (21) «Длина массива не равна 0»
string (21) «Длина массива не равна 0»
string (21) «Длина массива не равна 0»
object (ObjectB) # 6 (4) {
[ "Имя класса": защита] =>
string (7) "ObjectB"
["Столбец 1"] =>
НОЛЬ
["Столбец 2"] =>
НОЛЬ
["Столбец 3"] =>
НОЛЬ
}

Я ожидаю, что первый экземпляр объекта ObjectB будет выводить сегмент «Array length is 0», а затем продолжить.

Может ли кто-нибудь помочь?

Solutions Collecting From Web of "PHP5 и абстрактные классы. Отдельная копия переменных класса для каждого дочернего класса?"