Появилось время что-то переписать, подумал создать тему похвастаться что ли...
Или мож поступят какие-то ещё предложения идеи и т.п.
Ну и вообще делаю я эту тему, чтобы не забросить опять писанину. Наобещаю тут всего и нужно будет выполнять обещания =)
Многое относится и к самой DS, основы DS, как там всё работает и т.п., так что можете и почитать если интересно...
Весь функционал SE будет переписываться основательно, но принципы меняться не будут, всё также останется работать на куче функций, без крутого ООП, так как на php4delphi делать ООП - это насилие мозга.
Во первых в php4delphi почти нет ничего для создания ООП, а я добавлял некоторые штуки простого описания классов, аргументов и т.д., но этого не достаточно для магии.
Так что пока так, а потом как пойдёт, возможно всё на C++ Builder перекочует...
Так как щас просто нет столько времени, чтобы всё с нуля писать на C++ Builder.
Ну и короче ближе к теме. Делаю новые сборки SE.
В SE:
- Исправил пару мелких багов с определением текущей папки (progDir) и т.п., и то это временно, там вообще нужно будет переписать алгоритм работы проекта.
- Новые функции SE будут теперь работать как с указателем, так и с свойством объекта self, а т.е. не нудно будет париться на счёт того передаётся self или объект.
Есть ещё мысль работать по имени объекта, но думаю это не приживётся, так что будет специальная функция поиска, типа как в DS функция c(). А также есть мысль сделать селекторы в функции поиска, подобные селекторам CSS, тогда придётся работать с группами и т.п., это может будет, но походит на какое-то баловство.
- Ну и добавляются по мере надобности те самые новые переработанные функции с обновлёнными багами.
В DS:
- Все компоненты (и всё вообще, включая ds) также будут переписаны под новый функционал SE.
- Уже работает некоторый базовый функционал DS, классы и т.п.
Есть базовый класс TComponent, от которого отходят все остальные классы компонентов Delphi VCL.
Ну как в DS. В этом классе описаны всякие конструкторы, сетеры, гетеры и т.п.
Переменная $class_name_vcl (неустоявшиеся имя) будет отвечать за то, какой компонент создать конструктору.
Если мы будем делать свой особый класс и наследовать например форму TForm, то переменная останется от класса формы и не требуется её объявлять в новом классе (даже вообще не желательно в пользовательских классах её объявлять, так как в ней должен быть только тот класс, который существует в SE и под который написана оболочка).
Пример:
- Появится фишка у подобных Items/Strings/Lines и т.п. свойств.
Фишка заключается в работе с объектом как с массивом.
Такая фишка позволит писать Delphi подобный код.
Пример (уже рабочий):
Ну и пока всё, может показаться мало, но это основа, а все классы штампуются один за другим, например вот TMainMenu.
Пишу пока части студии и что требуется, то и добавляю, а потом добавится и всё остальное.
Много короче планов, пока все раскрывать не буду, а то вдруг не сделаю что-то XD.
Сборки выкладывать пока планов нет, так как мало что готово, всё ещё может меняться и т.д.
Я вот ещё использую пространство имён, хотя думаю от этого избавиться, из-за возможных багов с бкомпилером или т.п. Хотя вряд ли.
Например, примерно так будут выглядеть функции:
Или мож поступят какие-то ещё предложения идеи и т.п.
Ну и вообще делаю я эту тему, чтобы не забросить опять писанину. Наобещаю тут всего и нужно будет выполнять обещания =)
Многое относится и к самой DS, основы DS, как там всё работает и т.п., так что можете и почитать если интересно...
Весь функционал SE будет переписываться основательно, но принципы меняться не будут, всё также останется работать на куче функций, без крутого ООП, так как на php4delphi делать ООП - это насилие мозга.
Во первых в php4delphi почти нет ничего для создания ООП, а я добавлял некоторые штуки простого описания классов, аргументов и т.д., но этого не достаточно для магии.
Так что пока так, а потом как пойдёт, возможно всё на C++ Builder перекочует...
Так как щас просто нет столько времени, чтобы всё с нуля писать на C++ Builder.
Ну и короче ближе к теме. Делаю новые сборки SE.
В SE:
- Исправил пару мелких багов с определением текущей папки (progDir) и т.п., и то это временно, там вообще нужно будет переписать алгоритм работы проекта.
- Новые функции SE будут теперь работать как с указателем, так и с свойством объекта self, а т.е. не нудно будет париться на счёт того передаётся self или объект.
Есть ещё мысль работать по имени объекта, но думаю это не приживётся, так что будет специальная функция поиска, типа как в DS функция c(). А также есть мысль сделать селекторы в функции поиска, подобные селекторам CSS, тогда придётся работать с группами и т.п., это может будет, но походит на какое-то баловство.
- Ну и добавляются по мере надобности те самые новые переработанные функции с обновлёнными багами.
В DS:
- Все компоненты (и всё вообще, включая ds) также будут переписаны под новый функционал SE.
- Уже работает некоторый базовый функционал DS, классы и т.п.
Есть базовый класс TComponent, от которого отходят все остальные классы компонентов Delphi VCL.
Ну как в DS. В этом классе описаны всякие конструкторы, сетеры, гетеры и т.п.
Переменная $class_name_vcl (неустоявшиеся имя) будет отвечать за то, какой компонент создать конструктору.
Если мы будем делать свой особый класс и наследовать например форму TForm, то переменная останется от класса формы и не требуется её объявлять в новом классе (даже вообще не желательно в пользовательских классах её объявлять, так как в ней должен быть только тот класс, который существует в SE и под который написана оболочка).
Пример:
PHP код:
/* класс унаследованный от TComponent, основной смысловой нагрузки не несёт,
создан пока просто забегая в будущие, мож пригодится,
та и вообще просто такая иерархия классов в delphi, там ещё куча подобных классов */
class TControl extends TComponent {
protected $class_name_vcl = __CLASS__;
}
/* класс формы из SE, тут пока без дополнительного функционала, для работы спец.функций...
но форма уже вполне рабочая */
class TForm extends TControl {
protected $class_name_vcl = __CLASS__;
}
/* своя форма, с какими-нибудь модификациями при конструкторе и т.п.
класс указывать не требуется, так как создаётся форма TForm, а класса TMyForm в SE не существует... */
class TMyForm extends TForm {
}
Фишка заключается в работе с объектом как с массивом.
Такая фишка позволит писать Delphi подобный код.
Пример (уже рабочий):
PHP код:
$menu = new TMainMenu($fmMain);
$item = new TMenuItem($fmMain);
$item->caption = 'Файл';
$menu->items[] = $item; //так работает
$item = new TMenuItem($fmMain);
$item->caption = 'Правка';
$menu->items->add($item); //и так работает
$item = new TMenuItem($fmMain);
$item->caption = 'Создать';
$menu->items[0]->add($item); //и подпункт к меню "файл" можем добавить
$item = new TMenuItem($fmMain);
$item->caption = 'Открыть';
$menu->items[0][] = $item; //или так подпункт к меню "файл"
$item = new TMenuItem($fmMain);
$item->caption = 'Файл PHP';
$menu->items[0][1][] = $item; //подпункт к меню "Открыть"
$menu->items[0][1][0]->caption = 'Файл TXT'; //можем поменять заголовок
$menu->items[0]->items[1]->items[0]->caption = 'Файл TXT'; //можно и так обращаться
/* работает count как с массивами
а также работает unset, isset, foreach, next, current, end и т.д.
обычный объект как массив */
pre( count($menu->items) );
pre( count($menu->items[0]) );
Пишу пока части студии и что требуется, то и добавляю, а потом добавится и всё остальное.
Много короче планов, пока все раскрывать не буду, а то вдруг не сделаю что-то XD.
Сборки выкладывать пока планов нет, так как мало что готово, всё ещё может меняться и т.д.
Я вот ещё использую пространство имён, хотя думаю от этого избавиться, из-за возможных багов с бкомпилером или т.п. Хотя вряд ли.
Например, примерно так будут выглядеть функции:
Код:
SE\VCL\Create()
SE\VCL\Destroy()
SE\VCL\PropGet()
SE\VCL\PropSet()
SE\VCL\PropType()
SE\VCL\PropList()
SE\VCL\PropExists()