Стандартная база данных нейтральный XSD для описания схемы реляционной базы данных

В PHP вы используете ключевое слово self для доступа к статическим свойствам и методам.

Проблема в том, что вы можете заменить $this->method() на self::method() где угодно, независимо от того, объявлено ли method() как статическое или нет. Итак, какой из них использовать?

Рассмотрим этот код:

class ParentClass {
    function test() {
        self::who();    // will output 'parent'
        $this->who();   // will output 'child'
    }

    function who() {
        echo 'parent';
    }
}

class ChildClass extends ParentClass {
    function who() {
        echo 'child';
    }
}

$obj = new ChildClass();
$obj->test();

В этом примере self::who() всегда будет выводить «parent», тогда как $this->who() будет зависеть от того, какой класс объект имеет.

Теперь мы можем видеть, что self относится к классу, в котором оно вызывается, тогда как $this относится к классу текущего объекта .

Таким образом, вы должны использовать self только тогда, когда $this недоступно или когда вы не хотите, чтобы классы-потомки перезаписывали текущий метод.

5
задан Terence 19 June 2009 в 18:40
поделиться

3 ответа

Это не совсем то, что вы ищете, но в PostgresSQL Wiki есть интересный раздел об экспорте XML, в котором описывается, как они поддерживают SQL и XML вместе. Он отображает раздел о том, как таблица будет экспортирована в виде XML и XSD, который будет ее поддерживать, что выглядит довольно общим. Он может служить вам моделью для создания своего собственного.

В Wiki говорится о ссылке на стандарт ISO / IEC 9075-14: 2006, который, похоже, принят несколькими крупными поставщиками в качестве основы. Я быстро просматриваю сайт ISO, где говорится, что: 2006 год был обновлен до 2008 года. Я уверен, что вы можете найти покрытую спецификацию этого, чего вы не делаете.

2
ответ дан 15 December 2019 в 06:33
поделиться

Интересная проблема - я не знаю ни одного стандарта или инструмента для достижения этой цели.

Вам почти понадобится какая-то «нейтрализованная» версия с переходниками для каждого отдельная система базы данных, на которую вы хотите ориентироваться - даже просто для отображения всех различных типов данных (VARCHAR и NVARCHAR в SQL Server, VARCHAR2 в Oracle и т. д.).

Вы можете просто использовать типы, определенные в стандарте SQL: 2003 - но даже тогда вам, вероятно, все равно придется иметь какое-то сопоставление / адаптацию, зависящее от поставщика. Не говоря уже о некоторой поддержке деталей реализации, зависящих от производителя (например, столбцы IDENTITY в SQL Server по сравнению с SEQUENCE в Oracle и др.)

Очень интересный вопрос! Я надеюсь, что другие смогут пролить больше света на проблему и, возможно, порекомендовать существующий инструмент.

Если нет, то и вы решаете применить свой собственный - подумайте о том, чтобы сделать его открытым на CodePlex или Google Code! Я уверен, что многим будет интересно!

MArc

1
ответ дан 15 December 2019 в 06:33
поделиться

Возможно, стоит попробовать спецификацию метамодели управления информацией UML (IMM) от OMG.

0
ответ дан 15 December 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: