Вверху ..... 1.4 Dirs ..... 1,3 UML ..... 1,5 DM ..... IDE ..... 3. Круд ..... SW FW
Пример модуля CRUD Код 7 Сценарии:
Самый простой CRUD ..... index.php ..... home_ctr ..... Home (страница таблицы) ..... Создать ..... читать (профиль пользователя - форма) ..... Обновление .... адаптер
B12PHPFW: разработан на Home PC на (новейший) Windows 10 64 -бит с XAMPP (Apache Web Server, MariaDB). Также протестировано на виртуальной виртуальной машине Windows Oracle Oracle Linux (веб -сервер Apache) и на демонстрационных сайтах Linux. B12PHPFW является результатом 20 лет обучения PHP как хобби (но у меня нет производственных инсталляций).
См. Code (сигналы) поток и поток данных или здесь - не работает, потому что ограничение по времени.
Извлечение из fwphp-master.zip только ~ 300 т.п.н. (ядро B12PHPFW составляет менее 100 КБ, причем многие добавленные примеры обучения и изображения ~ 3 МБ):
(Apache or nginx...) WEB SERVER DOCROOT J:\xampp\htdocs\, my is virtual host J:\awww\www\
│
│
│─I.fwphp (app or SITE1 or APLications1) = Main site dir. fwphp is optional name.
│ └── Contains MODULE GROUPS eg APLication1 or glomodul (under which is www =main menu) :
│ glomodul, finance, material, salary
│ └── They contain MODULES eg www or post under glomodul dir
│
│
│─II.index.php redirects to main menu url : /fwphp/glomodul/www/index.php
│
│
│─III.vendor
│ └── b12phpfw dir = internal resources, external sresources are in other vendor subdirs.
│ Here are class Autoload and other for all sites shared - common - global
│ classes Db_allsites and Config_allsites....
│ └── erusev = external resources
│ └── parsedown = external resources
│ └── simplemde
Скачать с https://github.com/slavkoss/fwphp
Первый "/" в путях ниже: J: awww www "=" http: // dev1: 8083/"= helywebserver_or_hosting_docroot_path, например, первое"/"в"/vendor/b12phpfw "
Папки: поставщик (был цинком, теперь Zinc больше нет, акции находятся в /поставщике /B12PHPFW )
На странице PhpmyAdmin:
Импорт в моем SQL J: awww www fwphp glomodul blog_akram 01_phpcms.sql : первое этап обучения "1a. Msg mysql" на странице основной меню - старый стиль процедурного программирования, но достаточно, если мы хотим только модуль блога (не нуждаясь в OOP -Classess -AutoLoaders -routing -rypaters -rpatching -rpatchcesspacesfices, ry -rpatching -prypesfics, ry -rpatching -spacesfics, ry -rpatchcesspacesfics, ry -rpatchcesspacesfics, ry -rpatchcesspacesf которые полезны для больших сайтов - сотни модулей).
Later to learn create big sites - hundreds of modules create database z_blogcms , utf8mb4 :
J:\awww\www\z_DDL_and_other\01_DDL_mysql_blog.sql
or in Oracle DB J:\awww\www\z_DDL_and_other\01_DDL_oracle_blog.sql
J: awww www fwphp glomodul adrs is isdrs module - второй этап обучения рядом с модулем MNU в J: awww www fwphp glomodul www . ADR не для простого примера, но недостаточно, чтобы выучить меню B12PHPFW и скелет кода CRUD! Достаточно для простых учебных модулей - это модули MNU, MKD и MSG! Кажется сложным, но нет.
Большинство (все?) Источники обучения PHP в Интернете и книгах (Никсон, Пауэрс, Янк, Уллман ...) кажутся простыми, но, на мой взгляд, хороши только для базового Sintax и приводят к неправильному кодированию меню и скелета кода CRUD, так же сложнее, чем B12PHPFW! Забронируйте CMS Duckett 2022 год для изучения PHP, но пример CMS не так хорош. Это один из жизненных парадоксов: «Иллюзия, подобие внешности».
MNU - модуль меню в папке /fwphp /www
MKD - модуль управления контентом Markdown в папке/fwphp/glomodul/mkd
MSG - Crud MSG -Blog Модуль в/fwphp/glomodul/blog, ... пользователь, ... post_category, ... post, ... post_comment (все в glomodul dir).
В настоящее время 2023.01.15, B12PHPFW версия 10.0.0.0 "Ame Module DB Adapter для любого общего адаптера DB". 10.0.0.0 означает:
Январь 2023 года. Только модуль ADRS работает на MySQL или Oracle (11G) DB (не все функциональные возможности, но достаточно, чтобы четко увидеть все важное). Нетрудно обновить весь модуль Addrs и модуль MSG для версии 10, но это занимает много времени, поэтому я не спешу, потому что я думаю, что достиг цели меню и кода скелета CRUD B12PHPFW. Много времени в предыдущем предложении означает, что инструменты SW, а также пользовательские приложения требуют много времени для отделки, если мы что -то изменим. Лучшим примером того, как избежать этого, является общий (глобальный) код, например, «тот же модульный адаптер DB для любого общего адаптера DB».
Целью инструмента B12PHPFW PHP SW является, основываясь на более чем двадцатилетней работе с Oracle Forms 6i, чтобы сделать инструмент для *.PHP -сайтов с логикой, подобной Oracle Forms 6i.
MNU, Addrs ... папки (модули) похожи на Oracle Forms 6i *.fmb, а .php похожи на программы внутри некоторых .fmb. Я убежден, что этот подход намного лучше, чем три папки M, V, C для всех страниц ( .fmb), которые, кажется, мне кажется работой авторов SW Tools, которые не имеют достаточного практического опыта. Такие авторы нанесли много урона в наше время (Microsoft, Oracle, все глупые версии Linux и даже Windows).
http: // dev1: 8083/fwphp/glomodul/adrs/
Замените http: // dev1: 8083 на веб -адрес, например, http: // localhost b12 - Открывает домашнюю страницу ADRS Module:
Главная ....... Пример1 ....... Пример2 ....... Адрес - главное меню в модуле (или сайте) HDR
Домашняя страница -титул
-содержание страницы:
Вы в поле зрения: J: awww www fwphp glomodul adrs home.php
$ pp1-> module_relpath ниже сайта root = fwphp/glomodul/adrs
$ pp1-> module_url = http: // dev1: 8083/fwphp/glomodul/adrs/
B12PHPFW отличается от других (PHP) структур (меню и скелетов CRUD -кода). Основные (большие) различия:
Каждый модуль (как Oracle Forms6i .fmb) находится в собственной папке, а не на всех модулях в 3 Dirs: M, V, C.
Итак, J: awww www fwphp glomodul adrs ... mini3 adrs ... nppses
Содержит сценарии только в одной папке модуля ADRS: ADRS.
Глобальные сценарии в: J: awww www vendor b12phpfw folder.
Пространства имен являются функциональными, а не позиционными (не Dir Tree, что не нужно, но DIR достаточно!).
Например, пространство имен B12PHPFW site_home www; или b12phpfw site2_home www (!) или b12phpfw module adrs
1. B12PHPFW Модуль является функциональной частью пространства имен - что делает сценарий - мы можем написать здесь все, что хочется
2. ADRS - это папка, в которой сценарий (J: awww www fwphp glomodul adrs home_ctr.php, http: // dev1: 8083/fwphp/glomodul/adrs/)
Логотип сайта (если вы хотите): в фоне CSS: url ('Data: Image/PNG; BASE64, IVBORW0KGGOAA ... QMCC');
-Модуль (или сайт) нижний колонтитул:
Это Mini3 PHP FW на B12PHPFW на основе MINI3 на GitHub.
На этой странице пример 1 URL (веб -адрес - веб -имя): http: // dev1: 8083/fwphp/glomodul/adrs/? I/ex1/где ex1 - это метод в домашних условиях CLS.
Метод EX1 включает в себя эту страницу = Просмотр, чья Aper.system Abress: j: awww www fwphp glomodul adrs example_one.php.
На этой странице 2 пример 2 рецидивирует два параметра p1 = 'param1' и p2 = 'param2'. Эта страница включена в метод Home CLS EX2. Эта страница URL: http: // dev1: 8083/fwphp/glomodul/adrs/? I/ex2/p1/param1/p2/param2/
Важной частью недвижимости Pallette $ pp1 является URIQ = URL (URI) Запросы запросов: [i] => ex2, где ex2 - это метод в домашних CL, которые называются некоторым методом или включает в себя какой -то сценарий [P1] => Param1 Это метод (скрипт) Параметр 1
URL -параметр p1 = param1 url Получить параметр p2 = param2
Вы виды: J: awww www fwphp glomodul adrs example_two.php
Черта DB_ALLSITES Статическая публичная функция RRCNT CALL OF FROM CLASS TBL_CRUD »имеет проблему:
Умеренный: вызов метода статического признака B12PHPFW CORE B12PHPFW DB_ALLSITES :: RRCOUNT устарел, его следует призывать только к классу, используя черту - авторы PHP не объяснили эту проблему? Так что это на данный момент (2022-07-03). (Старое хорошее правило: не используйте расширенные языковые функции, потому что авторы языка не проверяют изменения в достаточных деталях!)
Есть много, чтобы узнать о модуле ADRS. Если кажется трудно попробовать первый mini3. Модуль MSG добавляет функциональность «больше модулей», которая является реальным программированием, не простым, но необходимым.
Вывод из класса AutoLoad после изменения if ('' ') {... на if (' 1 ') {... Отображает поток кода после нажатия на кнопку «Адрес» или любую другую ссылку.
См. Clean_architecture.md, где находится изображение уровней кода от https://github.com/nazonohito51/clean-architecture-mashing.
Попробуйте редактировать MD -файл: http: // dev1: 8083/fwphp/glomodul/mkd/? I/showhtml/path/j: aww www clean_architecture.md
Вершина ...... Дирс ..... UML ..... DM ..... IDE ..... CRUD ..... SW FW
См
или, например, https://git-cm.com/docs/git-checkout
J: symenu Programfiles spssuite symenusuite cmder_sps
Перейдите в свой рабочий каталог или папку проекта (если не статус GIT говорит: «Фатальный: не репозиторий GIT (или какой -либо из родительских каталогов): .git»).
git config -global user.name 'yourname'
git config-global-replace-all user.email 'youremail'
GIT config-local -l Установить GIT Credentials Manager для Windows, чтобы избежать входа на каждый PUSH-в расширении CMDER GIT (GIT Update-GIT-FOR-Windows)
J: awww www (Master -> Origin)
или git добавить fwphp (или что угодно, что спрашивает git) или git добавить -a или git add index.html
Мы хранили наши файлы проекта в нашем жестком диске System.
Если Cmder показывает ошибку «Фатальный: невозможно автоматически определить адрес электронной почты»: см. Выше git config ...
git config -global user.email "[email protected]" и git config -global user.name "Ваше имя"
Чтобы установить личность вашей учетной записи по умолчанию. Опусти -Глобал, чтобы установить идентичность только в этом хранилище.
Мы хранили наши файлы проекта на нашем сайте GitHub.
Вы хотите восстановить старую пересмотр файла: GIT Checkout 8a7b201 index.html Если вы указате «Head» в качестве ревизии, вы восстановите последнюю совершенную версию файла, эффективно отмените любые локальные изменения, которые вы в настоящее время имеете в этом файле:
git cakeout head index.html
Мы можем откатить наши удаленные файлы в рабочем каталоге, используя команду:
GIT Checkout -.
или GIT Checkout - FileMame ...
GIT IS программа, а GitHub - это учебное пособие по сайту - развертывание (книга)
GIT мы используем, например, для синхронизации наших сценариев:
Начиная с 13 августа 2021 года, GitHub больше не принимает пароли учетных записей при аутентификации операций GIT на github.com, и требует использования аутентификации на основе токков , такой как ** PAT, токен личного доступа над HTTPS = PSW 40. Вы также можете продолжать использовать ключи SSH, где вы предпочитаете.
https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
λ git remote -v Выходы:
Происхождение https: // [token]@github.com/slavkoss/fwphp.git (fetch)
Происхождение https:/[token]@github.com/slavkoss/fwphp.git (push)
Таким образом, остается только последний коммит, и это первое коммит:
Сохраните свой .git/config и восстановите его после. (Я удаляю его в корзину).
Моя PHP IDE - Symenu Zip Package в качестве запуска для всех SW, перечисленных ниже (портативно, если это возможно):
Плагин Markdown Botepad ++
Скопируйте tmarkdownviewerplusplus.dll в подразделение плагинов в вашем каталоге установки блокнота ++.
Плагин добавляет небольшой значок разметки на панель инструментов, чтобы переключить зрителя в качестве пристыковой панели.
Затем в настройках АЭС -> Импорт -> Импорт плагин (ы).
См. В J: awww www nppsess file nppsess и другие файлы NPPSESS.
MD в HTML -преобразователи на INET:
Также хорошо, все портативные в Symenu: Notepad2-Mod (2 МБ), атом (524 МБ),
Visual Studio Code (247 МБ), Cudatext (28 МБ), PSPAD (23 МБ), RJ, написанный (416 МБ),
HTML Wysiwyg Editors: Microsoft Expression Web (заброшенная, но все еще хорошая).
Я избегаю DreamVeawer, Komposer (заброшен, слишком старый).
Командир :
это старое, но лучшее (Янн Хаттунен) или все равно, см. Symenu
Meinplatz (x64) (часть портативных программ Symenu), как Treesize
Или многомолосанду, Q-Dir, TotalCommander ...
Браузер :
Google Chrome, Cyberfox, бледная луна
(в Symenu) - Win Cmd Line, имеет git.
Composer помогает вам объявлять, управлять и устанавливать зависимости от PHP -проектов.
FTP клиент Winscp . Игнорировать: | *.zip; J: awww www.git; J: awww www vendor/b12phpfw/dbconn_allsites.php;
FTP -сервер Symenu's Serva Community
PHP Руководство
Руководство по стилю PHP
Учебник PHP от W3Schools
Guzzle - это клиент PHP HTTP, который позволяет легко отправлять HTTP -запросы и тривиальные для интеграции с веб -службами.
DesignPatternSPHP - это коллекция известных дизайнерских шаблонов и некоторых примеров кода, как их реализовать в PHP 7.4. Каждый шаблон имеет небольшой список примеров.
Гравий-портативная плоская CMS с мощной системой управления пакетами плагинов, тем и самой гравий.
Руководство PHP
_.-'''''-._
.' _ _ '.
/ (o) (o)
| |
| / |
'. .' /
'. ''---'' .'
'-._____.-'
Показывает структуру классов - атрибуты и методы
Вершина ...... Дирс ..... UML ..... DM ..... IDE ..... CRUD ..... SW FW
<?php
// J:awwwwwwvendor/b12phpfwDbconn_allsites.php
// Is required in trait Db_allsites
//$conn_params =
return [
null
, ' mysql '
, ' localhost '
, ' z_blogcms '
, ' root '
, ''
] ; B12PHPFW CODE CODE.
Уровень: все сайты (тот же код для всех сайтов EE Shared, Global, Common)
( Модель , абстрактность)
класс dbconn_allsites. Черта похожа на класс . Причиной черты является чистая структура кода:
Некоторый класс может использовать больше черт - сеть - больше родителей, но может продлить только один класс - иерархия .
Я не использую черту - имел некоторую ошибку, как часто бывает передовым кодом.
// see class script // see class script
В основном db_allsites.php Read (rr, отчет) работает как код в:
/awww/www/clean_architecture.md. Я сделал это в версии 10 января 2023 года.
B12PHPFW CODE CODE.
Уровень: все сайты (тот же код для всех сайтов EE Shared, Global)
// see class script // see class script Чтобы избежать команд INC. Во многих сценариях
B12PHPFW CODE CODE.
Уровень: все сайты (тот же код для всех сайтов EE Shared, Global, Common)
// see class script // see script B12PHPFW код модуля.
Уровень: модуль (тот же код для папки модуля EE, например, MNU или MKD или MSG = блог)
Для выполнения программы иерархия класса: как будто все атрибуты и методы в классах выше Home_ctr находятся в классе home_ctr. То есть они находятся в $ в этом объекте , который создается (создается в памяти) в home_ctr (который, по -видимому, содержит все классы - описания атрибутов и методов над ним).
Почему общие (общие) атрибуты и методы в иерархии над Home_ctr, а не в home_ctr?
Мы не хотим писать в каждом скрипте Home_ctr Полный общий (общий) код выше Home_ctr .
Верх ..... Dirs ..... Uml ..... DM ..... IDE ..... Crud ..... SW FW
См. Информационный код:
http://phporacle.eu5.net/fwphp/glomodul/z_examples/03_info_php_apache_config_scripts.php
https://github.com/slavkoss/fwphp/blob/master/fwphp/glomodul/z_examples/03_info_php_apache_config_scripts.php
B12phpfw очень разнообразно, чем (все?) Другие PHP -структуры (я предпочитаю «меню и скелеты кода CRUD»), потому что:
Dirs подобны Oracle Form Form Module .fmb https://github.com/ngrt/mvc_todo - очень хорошее кодирование (но для простого примера, без глобалов, без имен ...), показывают обычные платформы PHP и myrs in my in my in my in my in my in my in my in my in my in my in myvc_f in in my in my in in my in in my in in my in my in myvc_f in in my in my in in my in in my in in my in my in my in my v_xexmples https https и glomodul Поиск Google: GitHub PHP Framework
и другие причины, упомянутые ниже
См. Mini3 Php Framework https://github.com/panique/mini3, что превосходно редко, чтобы не просто простые пример MVC (много хорошего кодирования). Моя маршрутизация с использованием ключевых значений отличается, но отправка с использованием методов домашнего класса основана на Mini3 .
B12PHPFW имеет 3 модуля и некоторые утилиты:
Вершина ...... Дирс ..... UML ..... DM ..... IDE ..... CRUD ..... SW FW
См. Использование MKD FWPHP/GLOMODUL/MKD/02/01_FWPHP/PHP_DIP_DI.TXT
Вершина ...... Дирс ..... UML ..... DM ..... IDE ..... CRUD ..... SW FW
Может быть, jquery, php, bootstrap ajax db table rows crud - самый простой, самый быстрый, лучше всего, но я не предпочитаю jquery, без ajax. Только JavaScript, который мне нужен, это диалог да или нет.
Crud Rows in Table Song (#ID, исполнитель, трек, ссылка) . Mini3 Framework https://github.com/panique/mini3 Я думаю, что лучше изучить скелет PHP и Frameworks Code. Мой модуль ADRS в Glomodul Modules-Group состоит из Mini3 на B12PHPFW. Почему ? Я думаю , что для больших сайтов mini3 - просты - без акций ...
Смотрите сценарии.
Самый простой CRUD ..... index.php ..... home_ctr ..... Home (страница таблицы) ..... Создать ..... читать (профиль пользователя - форма) ..... Обновление .... адаптер
Нам нужна единственная точка входа в модуле, чтобы избежать беспорядка со ссылками (https: // ... ссылки не ясны, лучше включены и вызовы метода).
<?php
/**
* J:awwwwwwfwphpglomoduladrsindex.php
*/
. . .
/**
* J:awwwwwwfwphpglomoduladrsindex.php
* DISPATCHING is calling method according URL parts (extracted with ROUTING code).
* Because MODULE METHODS PARAMS ARE MOSTLY GLOBAL (same for all modules), eg paths,
* to avoid lot of same code in modules (code redundancy) :
* 1. WE ASSIGN GLOBALS IN PARENT CONF&UTL CLS METHOD
* (not knowing which module is going to use them)
* 2. THEN, FROM PARENT CLS WE CALL METHOD IN CHILD MODULE CLS.
* Module method knows how to use globals
* and what module needs for parameters beside globals.
*/
/**
* ns (NAMESPACES) we use in clses script autoloading.
* vendor_namesp_prefix processing (behavior) clsdir [ cls] [as clsalias]
* eg B12phpfw is vendor_namesp_prefix ; //FUNCTIONAL, NOT POSITIONAL
* FUNCTIONAL parts are not requirad, we use them to better understand script purpose.
*eg clsdir - only this part of namespace is POSITIONAL, CAREFULLY !
*/
/**
* **HELPNS
* first namespace part B12phpfw is NOT REQUIRED : vendor's name NS's prefix (FUNCTIONAL NSPART)
* 2nd ns part m o d u l e is NOT REQUIRED : FUNCTIONAL NSPART = processing (behavior)
*
* FNSPs (FUNCTIONAL NS PARTS) are ignored by fw, ee we name them as we wish.
* We use FNSPs as description to depict WHAT CODE DOES (processing, behavior).
* May be more functional ns parts as we wish - all are ignored !
*
* PNSP (POSITIONAL NS Part) CAREFULLY! : LAST NS part (BEFORE CLSNAME IF ANY) eg "blog" is DIRNAME.
* PNSP is actually (de facto, in fact, indeedded) DIRNAME and module name.
* Path OF DIRNAME (of PNSP) is in $pp1 array,
* used for Autoload class to include classes from dir DIRNAME.
* Autoload class is include, global, common, reusable.
*/ index.php ..... index.php ..... home_ctr ..... Home (страница таблицы) ..... Создать ..... читать (профиль пользователя - форма) ..... Обновление .... адаптер
. . .
* ------------------------------------------------------------------------------
* ROUTING TBL - module links, ( IS OK FOR MODULES IN OWN DIR ) key-keyvalue pairs :
* LINK ALIAS IN VIEW SCRIPT (eg l d d) => HOME METHOD TO CALL (eg del_ row_do)
* ------------------------------------------------------------------------------
* 1. ALL MODULE VIEWS LINKS SHOULD BE IN $ pp1_ module, SHAPED SO :
* 2. $ pp1 -> urlqrystringpart1_name => i/M E T H O D NAME /param1name/ param1value. . . 2 , 3. . .
* (urlqrystring LAST PART IS IN VIEW SCRIPT WHICH KNOWS IT , eg idvalue !)
* 3. IF LINK key-keyvalue pair IS NOT HERE THEN EG :
* in URLurlqrystring : QS . ' i/home/ ' home must be M E T H O D NAME in this script.
* Eg http: //dev1:8083/fwphp/glomodul/adrs/?i/ex1/ or
* http: //dev1:8083/fwphp/glomodul/adrs/?i/home/ or
* http: //dev1:8083/fwphp/glomodul/adrs/
*/
/** *****************************************
* CALL DISPATCH M E T H O D S
* they 1.call other fns or 2.include script or 3.URL call script
* CALLED FROM abstract class Config_ allsites, m ethod __c onstruct
* so: $pp1->call_module_m ethod($akc, $pp1) ;
* $ a k c is m o d u l e m ethod (in MM Home_ ctr, not global fn !!
* because MM Home_ ctr knows akc parameters)
* ******************************************
*/index.php ..... index.php ..... home_ctr ..... ** Home (страница таблицы ..... Создать ..... Read (Profile - Form) ..... Обновление .... адаптер
<!-- J:awwwwwwfwphpglomoduladrshome.php -->
< div class =" container " >
< h1 > Homepage </ h1 >
< p > You are in View: < ?=__FILE__? > </ p >
< p > $pp1- > module_relpath below site root = < ?=$pp1- > module_relpath? > </ p >
< p > $pp1- > module_url= < ?=$pp1- > module_url? > </ p >
< p > Namespaces are FUNCTIONAL, not POSITIONAL (not dir tree). </ p >
< p > Each module (is like Oracle Forms .fmb) is in own folder, not all modules in 3 dirs: M, V, C. </ p >
< p > In CSS background: url('data:image/png;base64,iVBORw0KGgoAA...QmCC'); </ p >
</ div >
<!-- J:awwwwwwfwphpglomoduladrsexample_one.php -->
< div class =" container " >
This page EXAMPLE1 URL (web adress - web name) is :
< h3 > < ?=$pp1- > module_url? > ?i/ex1/ </ h3 >
where ex1 is method in Home cls.
< p >
ex1 method I N C L U D E S this page = view whose oper.system adress is : < ?=__FILE__? > .
</ p >
< p > </ p >
</ div >
<!-- J:awwwwwwfwphpglomoduladrsexample_two.php -->
< div class =" container " >
This page EXAMPLE2 RECIVES TWO PARAMETERS p1='param1' and p2='param2'. < br >
This page is i n c l u d e d with Home cls ex2 method. < br >
This page URL is :
< h3 > < ?=$pp1- > module_url? > ?i/ex2/p1/param1/p2/param2/ </ h3 >
< p > Important part of Property pallette $pp1 is < b > uriq = URL (URI) query parts </ b > : </ p >
[i] = > ex2 where ex2 is method in Home cls to be called which calls some method or includes some script < br >
[p1] = > param1 This is method (script) parameter 1 < br >
[p2] = > param2 This is method (script) parameter 2
</ p >
< p > url GET parameter p1= < ?=$param1? > < br >
url GET parameter p2= < ?=$param2? > </ p >
< p > You are in View: < ?=__FILE__? > </ p >
</ div >index.php ..... index.php ..... home_ctr ..... Home (страница таблицы) ..... Создайте ..... Read (Profile - Form) ..... Обновление .... адаптер
<?php
// J:awwwwwwfwphpglomoduladrscre_row_frm.php
. . .index.php ..... index.php ..... home_ctr ..... Home (страница таблицы) ..... Создать ..... ЧИТАТЬ (Профиль пользователя - Форма ..... Обновление .... Адаптер
<?php
//J:awwwwwwfwphpglomoduladrsread_tbl.phpindex.php ..... index.php ..... home_ctr ..... Home (страница таблицы) ..... Создайте ..... Read (Profile - Form) ..... Обновление .... адаптер
<?php
// J:awwwwwwfwphpglomoduladrsupd_row_frm.phpSAYSTERCLCRUD INDEX.PHP ..... index.php ..... Home_ctr ..... Home (страница таблицы) ..... Создайте ..... ЧИТАТЬ (Профиль пользователя - Форма) ..... Обновление .... [Адаптер]
<?php
/**
* J:awwwwwwfwphpglomoduladrsTbl_crud.php
* DB (PERSISTENT STORAGE) ADAPTER C L A S S - PDO DBI
* (PRE) CRUD class - DAO (Data Access Object) or data mapper
* This c l a s s is for one module - does know module's CRUD
* Other such scripts should be (may be not ?) for csv persistent storage, web services...
*
* DM=domain model aproach not M,V,C classes but functional classes (domains,pages,dirs)
* MVC is code separation not functionality !
*/
/**
* (PRE) CRUD class - DAO (Data Access Object) or data mapper
*/
} // e n d c l s T b l_ c r u d
Нелегко увидеть необходимость, например, для пользовательского модуля преобразовать код из процедурного MVC в OOP MVC с пространствами имен и автозагрузкой для кода навигации (URL -S, ссылок) - одинаково - OOP не помогает. Процедурный MVC, например, код модуля пользователя может быть более ясным и читаемым. Так почему же ООП лучше?
Некоторые говорят: "Опция ООП?" - Например, отсутствие возможности повторного использования в ООП - чтобы получить банан (какой -то метод или атрибут), вы также получаете гориллу, удерживая банан и джунгли всей гориллы (все более высокие классы со сложными зависимостями ).
Например, интерфейсы помогают получить только банан, но кодирование сложно-я мог бы найти только примеры кода с сильным ходом с волной по этой теме.
J: awww www vendor b12phpfw db_allsites_intf.php (17 хитов) Строка 15: Статическая публичная функция get_or_new_dball (string $ allo_from = ' Неизвестный вызывающий абонент '); Строка 16: Статическая публичная функция закрыто bconn (); Строка 17: Статическая публичная функция getdbi (); Строка 18: Статическая публичная функция setdo_pgntion ($ new_val); Строка 22 : // 11111 ********************* Общественная функция rr_last_id (String $ tbl, массив $ more = [] ) : int; // Создать ряд TBL
Строка 45: // Статическая публичная функция pre_cc_uu (строка 56: статическая публичная функция uu ($ tbl, $ flds, $ where, $ binds = []); строка 62: // 33333 ****************** Функции Enterprise Bussines $ ph_val_arr): string;
Например, модуль счета -фактуры работает с двумя таблицами: счеты и счет -фактуру (или три таблицы: Билл, счет, счет, счет -фактура). Simmilal "Saymest Solution" Three Dirs M, V, C - это плохо - :) - 3DIRS Lovers помещают Technik Coding (M, V, C Code Sdentation) на переднем плане вместо страниц (функциональность, бизнес -логика).
RR Banana больше не в джунглях, Gorilla и Jungle - это только один абстрактный класс config_allsites, который де -факто $ pp1 = свойства.
Banana $ pp1 = Posterties Palette может вызвать трудности в совокупных (составных, составленных, мультиплексных) модулях, таких как блог, счетный счет ... но $ pp1 неизбежно (неизбежно (необходимость, необходимость) горилла-Jungle и не может быть дополнительно упрощен. Я работал 20 лет в $ PP1 и Global Jungle (Oracle Forms 6i) не так хорошо обоснован, как здесь.
См. Https://phpthewrongway.com/, или Джо Армстронг, почему OOP отстой http://harmful.cat-v.org/software/oo_programming/why_oo_sucks.
B12PHPFW основан на идеях во многих учебных пособиях, например, следующие несколько человек (но также и на некоторых идеях в Best PHP Frameworks Laravel, Simfony, YII, Phalcon ...).
Я сделал гораздо проще код B12PHPFW на основе идей в блоге Jazeb Akram CMS - Pages Design и Mini3 PHP FW - кодовый скелет , маршрутизация. Книги о примерах PHP -кода не так хороши.
Видео в блоге CMS (7,7 ГБ) Jazeb Akram: Udemy - Полный профессиональный курс PHP MySQL с 5 проектами - редко не для простого обучения . Аналогично видео (12,3 ГБ) EDWIN_DIAZ_PHP для начинающих - стать PHP Master - CMS Project. Кроме того, некоторые другие видео - так, похоже, это лучшие/простые дизайны страниц (не кодовые скелеты) для блога CMS EE, сообщений. Видео огромны по коммерческим причинам, чтобы достичь более высокого уровня num_of_gb ee $/gb, но кода нет лучшего - есть более старый стиль программирования.
Mini3 (mini3 php fw https://github.com/panique/mini3 - редко не простые модуль с одним таблицей, но может иметь больше функциональности.
/glomodul/z_examples/mvc_fw/hcstudio_easy/public/to простой пример FW, но хороший код для обучения PHP (только чтение CRUD), объяснено промежуточным программным обеспечением . Для сложного маршрутизации и промежуточного программного обеспечения, так что это нелегко!
https://github.com/ngrt/mvc_todo объясняется в этой статье в блоге 2017.12.17: https://medium.com/@noufel.gouirhate/create-your-own-mvc-framework-in-php-af7bd1f0ca19
https://dev.to/jorgecc/a-minimalist-mvc-project-using-php-and-without-a-framework-4pd8
https://github.com/trpb/immutablemvc
Другой :
Я внес много изменений (я надеюсь, что улучшения), которые я сделал, потому что мне не нравятся предлагаемые решения в лучших рамках PHP и в учебных источниках, упомянутых выше (особенно кодирование, например, Traversy Rutorial). Акции (повторно используемые, глобальные, включающие) не очень хорошо объяснены и кодируются там.
Я думаю, что это должно быть просто/быстро/профессионально: общие , маршрутизация, дискрирование, функциональные пространства имен и загрузки классов, редактирование текста, богатое веб -страхом ...
Вот почему я потратил так много часов на это (огромное время тратить время, которое должно делать авторы инструментов, а не пользователи инструментов, такие как я).
Этот кодовый скелет кажется сложным по сравнению с https://github.com/panique/***mini3***, который может быть лучшим шаблоном кода FW для небольших проектов (и обучения PHP).
Для крупных проектов акций - глобальные вещества - повторные материалы , которые я использую здесь, очень важны, так же, как модули в собственных папках (не все в 3 Dirs M, V, C) .
О акциях (глобальные) см. Обсуждение:
https://medium.com/@sameernyaupane/php-software-architecture-part-1mvc-1c7bf042a695
https: //medium.co## 3.2m/@sameernyaupane/php-software-architecture-part-2-the-alternative-1bd54e7f7b6d
https://blog.ircmaxell.com/2014/11/alternative-to-mvc.html
Зимой 2019/202020 гг. (Много до позднего, потому что я проверил лот, что сделали другие), я сделал версию 6. Меню и скелета PHP CRUD PHP (собственная структура под названием «B12PHPFW») - Код основного кода составляет ~ 50 кб. Версия 7 .: PHP 7 и признак DBI - в октябре 2020 года.
Почему ? Мне не нравятся предлагаемые решения в Best PHP Frameworks (Laravel, Simfony, YII ...) и источники обучения (Интернет, книги). Я думаю, что код счета -фактуры модуля модуля должен находиться в собственной папке, например Oracle Forms Form Invoice.fmb (не все формы/отчеты в 3 папках: M, V, C). Я думаю, что это должно быть просто/быстро/профессионально: глобальные , маршрутизацию, рассеяние, загрузка классов, редактирование текста, богатое веб -страхом - поэтому я потратил много часов, кодируя свой B12Phpfw (огромное время, которое должно делать авторов программного обеспечения, а не пользователей SW, таких как я).
Почему мне не нравятся предлагаемые решения и то, что я сделал, чтобы (я надеюсь) улучшить их. Красные характеристики являются основными причинами B12PHPFW, но я улучшил также другие функции. :
TraversyMVC (has video) and Mini3 are simplified, with some (many?) differences compared to Laravel, Simfony, Yii, Falcon... B12phpfw is much more different - see red colored features. PHP framework authors do not show such fitures table, for me it is hiding fitures (sell cat in bag).
| Особенность | B12phpfw | Mini3 MVC PHP fw and TraversyMVC |
|---|---|---|
| 1. Modules in own folder like Oracle Forms .fmb | has - it is one of main reasons for B12phpfw ! | has not all forms/reports in 3 dirs: M,V,C |
| 2. Name spaced classes (functional name spacing) | имеет | Mini3 which is in my opinion better than TraversyMVC : https://github.com/panique/mini3 has name spaced classes. TraversyMVC blog has not |
| 3. Number of folders (my opinion) | оптимальный | to many |
| 4. Minimal PHP code to learn (medium) PHP (my opinion) | optimal (but we could add additional code) | good but not enough eg see WYSIWYG, globals... |
| 5. Functional methods, attr. etc naming (my opinion) | хороший | could be better |
| 6. Global classes, methods etc (my opinion) | good see below CRUD test output | плохой |
| 7. (Posts edited with any) WYSIWYG editor | имеет | has not |
| 8. Home_ctr or Home_mdl CRUD layer methods do not know for underlaying Db_allsites layer PDO methods, MySql, Oracle... | has much improved | has not |
| 9. OOP | имеет | has like Mini3 |
| 10. namespaces (own PSR-4 (or Composer's) autoloading classes scripts) | improved | Mini3 has, TraversyMVC blog has not |
| 11. All scripts are included (ee no http jumps except some jumps in other module) | имеет | Mini3 has, B12phpfw took it from Mini3, TraversyMVC blog has not |
| 12. jQuery only for Bootstrap 5 | да | Mini3 has own CSS, TraversyMVC blog has |
| 13. AJAX, JSON | has not | Mini3 has basic jQuery AJAX explained, TraversyMVC blog has |
| 14. server side validation | имеет | имеет |
| 15. authentification (log in / out) | имеет | has not, TraversyMVC blog has |
| 16. authorization (only logged in users may execute some code ee CRUD code...) | имеет | Mini3 has not, TraversyMVC blog has |
| 17. Own debugging very simple and useful : msg in pre tag or popup JS msg). xdebug also helps. | имеет | has not |
| 18. PHP code here is good for (more) large sites | да | нет |
| 19. multilanguage pages | has, see https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/multilang/ | has not |
| 20. DM (Domain model) | has, simplest possible, no complicated namespaces, interfaces, adapters, data mappers... see https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/02_MVC/03xuding_glob | has not |
(Apache or nginx...) WEB SERVER DOCROOT J:\xampp\htdocs\, my is virtual host J:\awww\www\
│
│
│─I.fwphp (app or SITE1 or APLications1) = Main site dir. fwphp is optional name.
│ └── Contains MODULE GROUPS eg APLication1 or glomodul (under which is www =main menu) :
│ glomodul, finance, material, salary
│ └── They contain MODULES eg www or post under glomodul dir
│
│
│─II.index.php redirects to main menu url : /fwphp/glomodul/www/index.php
│
│
│─III.vendor
│ └── b12phpfw dir = internal resources, external sresources are in other vendor subdirs.
│ Here are class Autoload and other for all sites shared - common - global
│ classes Db_allsites and Config_allsites....
│ └── erusev = external resources
│ └── parsedown = external resources
│ └── simplemde
One of (Apache) WEB SERVER DOCROOT-s, my is J:\awww\www\
|
|
|-- **I. fwphp** (app) # **or SITE1, or APLications1** = Main MVC site dirs structure,
| | # my J:awwwwwwfwphp = Apache_docrootfwphp
| | # Contains **MODULE GROUPS** eg APLication1 or **www** (main menu), **glomodul**,
| | # **finance**, **material**. fwphp is optional name. Namespace is only one: B12phpfw.
| |-- ~~Controllers~~ # **NO M,V,C dirs but dirs are like Oracle FORMS form module.fmb !**
| └── ~~example.php~~ # NO Example Controller
| |
| |
| |-- ~~Models~~ # **NO M,V,C dirs** ee NO Models directory
| └── ~~example.php~~ # Example Model with functionality explanation
| |
| |
| |--~~Views~~ # **NO M,V,C dirs** ee NO Views directory, no template engines (PHP is template language)
|
|
| |-- ~~app.php~~ # **NO** Main fw file. nice abstraction (questionable value in real life programming) :
| | # **$app = new App(); $app->autoload(); $app->config(); $app->start();**
| | # Where is UML diagram for this beauty ?
| | # I think much better is **new Home_ctr($pp1) ** // Home_ ctr "inherits" index.php
| | # ee "inherits" $pp1, (global & module prroperties palette array),
| | # but also inherits see B12phpfw core UML diagram below. .
| |
| |-- ~~classes~~ # **NO** classes directory for autoloading.
| | | # B12phpfw global classes are in vendor/b12phpfw dir, module clses are in module dir.
| | └──-- ~~controller.php~~ # **NO** but **in module dir global abstract DISPATCHER (RESPONSE) class**
| | | # **Home_ctr ** extends Config_allsites
| | |--~~model.php~~ # **NO, no model class for each table** but **in vendor/b12phpfw** dir
| | # global abstract CRUD class **Db_allsites ** includes Dbconn_allsites
| | # In Db_allsites are **cc, rr, uu, dd methods** instead model class for each table !
| | # cc, rr, uu, dd methods are like Oracle Forms
| | # pre-insert, pre- and execute- query, pre-update instead model class for each table !
| | # To me seems not needed : model class for each table and ORM-s, active records
| |
| |-- ~~config~~ # **NO** config dir but in vendor/B12phpfw dir
| | | # **Config_allsites** extends Db_allsites (see core UML diagram).
| | | # Here is property palette array.
| | |-- ~~database.php~~ # = in vendor/b12phpfw **Dbconn_allsites.php**
| | |-- ~~session.php~~
| |
| |-- ~~helpers~~ # **NO** helpers dir, but classes Db_allsites and Config_allsites.
| |-- ~~examplhelper.php~~ # **NO** but own debugging (and Xdebug php extension - I do not use it any more).
|
|
|-- **II. index.php** # redirects to main menu url fwphp/www/index.php
|
|
| |-- **III. vendor **
| |--**B12phpfw** # B12phpfw has own (internal) resources here, external in other vendor subdirs.
| # Here are **class Autoload and other for all sites shared - common - global**
| # **classes** Db_allsites and Config_allsites....
|
|-- .htaccess # **NO** .htaccess (Apache mod_rewrite) URL rewriting all requests to MVC endpoint
# index.php (single module entry point). B12phpfw has **QS=?** constant instead.
Common fw dir structure are items in marked with NO - are not used in B12phpfw but basics are same. B12phpfw is better for large sites.
Top......Dirs.....UML.....DM.....IDE.....CRUD..... SW fw
For me SW fw is a few tens (hundreds) of code snippets for ctrl+c,v (global code snippets don't even need ctrl+c,v, so they are highly desirable).
See "What is SW fw (Software framework)" (using mkd in fwphp/glomodul/mkd/02/01_fwphp/ PHP_DIP_DI.txt/ ) which states :
Code flow terms : DI is about code flow tie - wiring , IoC is about code flow direction , and DIP is about code flow shape .
To be sure, use DI or IoC with DIP.
B12phpfw means: B=table rows blocks for CRUD like in Oracle Forms eg invoice.fmb master (B1) and detail rows (B2).
12 = steps of code flow must be clear, good explained. cs01 means code flow step 1.
phpfw = PHP framework = code skeleton for menus & CRUD (and many other functionalities,
I never understood enough fw authors explanations which is one of reasons why I do not believe them).
Code is small and simple but needs :
few hours (advanced user) - days (intermediate) - weeks/months (beginner) to understand it.
Understand code is must for any good code skeleton !
Clean code : "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler).
When you are dead, you don't know that you are dead. It is difficult only for the others. It is the same when you are lazy (or stupid).
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." (John Woods). adapter "Clean code reads like well-written prose" (Grady Booch). Good code reads close to natural speech.
Naming is the best tool we have to express what we do in code (avoid comments). Classes and variables are nouns: Price, CurrentTrade. Booleans are predicates: isScheduled, isRunning. Methods should start with a verb: getStrategyResult, createStrategyResult. Common naming errors : Very small names ( $tr, dd() ), Names that are not real words ($dgrtty), Methods that are nouns.
Notable package does something special, is also frequently innovative.
I developed B12phpfw in my free time (my work for last 20 years was : Oracle Forms & Reports 6i and Crystal reports. We wanted migrate them to PHP - never happend
because I cound not find near so good tool as abandoned Oracle Forms 6i - shame. See also below "...compared to all PHP frameworks...".
B12phpfw is good for developing large sites (more of them under web server root dir. path).
Innovative is :
Compared to all PHP frameworks and learning sources :
Based on best PHP learning code I could find. See [web server root dir. path]fwphp/glomodul/z_examples, where :
Conclusion : B12phpfw is most useful for CRUD in msg-blog and simmilar modules, so it is precisely B12phpCRUDfw . For mnu and mkd markdown WYSIWYG editor and simmilar modules we do not nead B12phpfw code skeleton, but I did it.
Includes and method calls instead URL jumps (http// jump to pages) - this is interesting question. http// jump to pages in B12phpfw is used only to jump somethimes in other module.
It is a shame that Oracle does not support the latest client-server SW Forms6i (replacement for the infamous Power objects) and Reports6i, but only the WEB version, which has repeatedly changed some basic functionalities (incompatibilities as with Microsoft tools) and which, for smaller companies, has too many flaws . Why does the WEB version of F6i, R6i not generate something like razor code or PHP code that do not need several servers and have no problem with large Java libraries, with starting... (The simplest Blazor form (#ID, name) is ~ 6 MB, PHP form 6 kB !)
Mr. Ferrante says "strongly discourage" which means "with the lure of Power objects, F6i, R6i..." we have hooked you on expensive and for smaller businesses inappropriate SW.
Is this the reason why very few developers start new projects with Oracle Forms, the transition from Oracle to Java, APEX (declarative programming with attributes - can clicking be done seriously!?) . These are harmful wanderings similar to those of Microsoft, which is unable to explain the basics of, for example, Blazor without killing several months of hard work for a student?
Do Microsoft, Oracle and other manufacturers of SW tools have anyone from real life who can save us from their children's games?
Any systematic work is (at first) very difficult . For example, high officials do not work systematically. The proof is incompatible SW tools, world crises (robbery of savings by inflation, printing money), crimes of inhuman predators like Hitler, Milošević, Putin, some religious high officials and their "brainwashed" believers (kill dissenters, mask women, ban their education and some other rights, for example abortion because of the imbecile idea that the fetus should be preserved at the cost of killing both the mother and the child through poverty - let them support the unwanted child and no one will ask for an abortion). In an orderly, non-anarchic society of educated people, such non-humans would not come to power. Voters do not recognize high officials who work unsystematic, ie they are not aware that by not going to the polls or by electing always the same incompetent / liars / thieves they are working against themselves, ie through ignorance / stupidity they fall prey to intense brainwashing by propagandists and commit a kind of suicide. Vote for someone else so that we don't always get squeezed by the same mafia octopuses of incompetent / lying / thieving high officials.
We have to look at the whole - all the (main) functions of the code , but PHP learning resources are more self-advertising to make money, not teaching all the (main) functions of the code. I wish Microsoft Oracle, PHP "experts - ha,ha" and others would teach (eg Blazor) the way I teach PHP here . Who can understand many megabytes of inexplicable inclusions? If something goes wrong look for an error in many megabytes of code? It's child's play for me, as complicated as Oracle Forms after the last client-server version of 6i. Installing, calling and maintaining servers is an (inexplicable) science. The post-6i call pattern is replaced by Oracle every few years with an incompatible one (problem: huge Java core library!). Microsoft's development tools, like Oracle's, are incompatible and some have been abandoned like Oracle Forms 6i.
Сделанный :
I not intend to do :
Difficult parts are :
version 8.0.0.0 means (https://semver.org/) :
November 2021. Current version code is 8. Msg module version 8 is not finished, but is visible what should be done during next few months (Mkd ver. 8 was finished in half hour, Mnu simmilar, Msg needs much more time because of bootstrap 5, improve CRUD sintax...).
See http://phporacle.eu5.net/ (freehostingeu - fast, stable, has free MySQL) how it should work.
What's new in version 8.1.0.0 :
User (TODO: or any) module may be caled from blog module so http://dev1:8083/fwphp/glomodul/blog/?i/home/p/1/ -> login -> tables (dashboard) ->admins
but also independent of some compound module so : http://dev1:8083/fwphp/glomodul/user/ .
What's new in version 8.0.0.0 :
2021.08.28 ver 7.0.5 : I added folder (module) WEBSERVERROOT/fwphp/glomodul/img_gallery
J:awwwwww is my WEBSERVERROOT.
J:awwwwwwfwphp is MYDEVSITEROOT1. You may have more MYDEVSITEROOT2, 3... See how in WEBSERVERROOT/index_laragon.php script.
glomodul is group of folders - modules which are not 01mater or 02financ or 03... glomodul may be named othermodules.
img_gallery module is first lesson about (theory behind) code skeleton (application architecture) B12phpfw
2020.09.30 DONE version 7.0.0.0 1. declare(strict_types=1) ; - PHP 7 2. DBI improved : trait Db_allsites instead class Db_allsites. 3. Each DB table (persistent storage) has adapter class Tbl_crud : which uses B12phpfwcorevendor/B12phpfwDb_allsites and implements Interf_Tbl_crud This means that : 1. Module's views or ctrs, eg blog module (see blog folder) work much easier with more Tbl_crud, ee with own Tbl_crud and with other tables Tbl_crud's. 2. class Home_ctr extends class Config_allsites. ( Logically all is in Home_ctr ).
2020.09.05 DONE On Linux demo sites : some PHP statement works different than on Windows (about dozen incompatibilities), eg links do not work in msg module, but work in mnu and mkd modules) : DONE in wsroot_pathvendor/b12phpfwConfig_allsites.php :
Error on Linux not on Windows : $REQUEST_URI = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_STRING);
No error on both OS : $REQUEST_URI = filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL) ;
I use xampp-portable-windows-x64-8.1.5-0-VS16.7z 92 Mb or newer on newest Windows 10, 64 bit. No more : Laragon portable laragon.7z, 19 MB. No more WAMP because is not fully portable, Composer needs coding displayed below and it is only for Windows. It seems WAMP and Laragon not giving newest/simplest solutions as xampp does.
WAMP does not like PHP in Windows PATH variable, so :
1. I installed Composer-Setup.exe and removed PHP from PATH.
2. **C:composercomposer7.bat** :
```
@echo OFF
:: in case DelayedExpansion is on and a path contains !
setlocal DISABLEDELAYEDEXPANSION
J:wamp64binphpphp7.2.9php.exe "%~dp0composer.phar" %*
```
Save file along with the originally installed composer.bat file.
3. Now call the php7 composer with the new command:
```
In Windows CLI, cd J:awwwwww and as admin :
composer7 selfupdate (1.8.4, 2019-02-25, Use composer self-update --rollback to return to version 1.7.3)
composer7 update
```
https://kevinsmith.io/modern-php-without-a-framework/
https://github.com/PatrickLouys/no-framework-tutorial
https://github.com/mmeyer724/Frameworkless
https://symfony.com/doc/current/create_framework/index.html
http://dev1:8083/fwphp/glomodul/mkd/?edit=001_MDcheatsheet.txt
http://dev1:8083/fwphp/www/
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/01_oracle_DB_18c_instalac.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/02_oracle_APEX_20_1_instalac.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/03_1oracle_apex_sales_module.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/03_2oracle_apex_sales_apl_cloud.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/devsuite10g_instalac.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/devsuite10g_F6i_to_apex.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_vbox/001_instalac_moj_vbox_oralin76.mkd
http://dev1:8083/fwphp/glomodul/mkd/?showhtml=J:/awww/www/readme.md
Top.....Dirs.....UML.....DM.....IDE.....CRUD.....SW fw
SimplestCRUD index.php.....index.php.....Home_ctr.....home (table page).....create.....read (user profile - form).....update....adapter
See http://dev1:8083/fwphp/glomodul/mkd/?i/edit/path/J:awwwwwwreadme_thoughts.md for my earlier thoughts.