TOP ..... 1,4 SIRS ..... 1,3 Uml ..... 1,5 dm ..... IDE ..... 3. CRUD ..... SW FW
Código de exemplo do módulo Crud 7 scripts:
Crud mais simples ..... index.php ..... home_ctr ..... home (página da tabela) ..... crie ..... leia (perfil de usuário - formulário) ..... Atualizar .... Adaptador
B12PHPFW: desenvolvido no PC doméstico no (mais recente) Windows 10 64 bits com XAMPP (Apache Web Server, Mariadb). Testado também no Windows Oracle Caixa Virtual Oracle Linux Virtual Machine (Apache Web Server) e nos sites de demonstração do Linux. B12PHPFW é resultado de 20 anos aprendendo PHP como hobby (mas não tenho instalações de produção).
Consulte o código (sinais) fluxo e fluxo de dados ou aqui - não funciona porque o prazo.
Extrato de fwphp-master.zip apenas ~ 300 kb (núcleo B12PHPFW é inferior a 100 kb, com muitos exemplos e imagens de aprendizado adicionais ~ 3 MB):
(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
Faça o download de https://github.com/slavkoss/fwphp
Primeiro "/" em caminhos abaixo está "j: awww www " = "http: // dev1: 8083/" = thilwebserver_or_hosting_docroot_path, por exemplo, primeiro "/" em "/vendor/b12phpfw"
Pastas: Fornecedor (era zinco, agora zinco não existe mais, as ações estão em /fornecedor /b12phpfw )
Na página Phpmyadmin:
Importar no meu sql j: awww www fwphp glomodul blog_akram 01_phpcms.sql : é o primeiro aprendizado da etapa "1a. msg mySql" na página do menu principal - o estilo de programação mais antigo, mas o suficiente para querer o módulo de blog (shemt -sht -oop - a classificação do blog - a classe de oop -scling - a classificação de oOOP - a classificação de oOOP - a classificação - a classificação de programação antiga - a classificação de automóveis - a classificação de blogs - a. Namespaces, globais que são úteis para grandes sites - centenas de módulos).
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 é módulo ADRS - Segunda etapa de aprendizado ao lado do módulo MNU em j: awww www fwphp glomodul www . O ADRS não é para o exemplo simples, mas não é suficiente para aprender o menu B12PHPFW e o esqueleto de código CRUD! O suficiente para não para os módulos simples de aprendizado são módulos MNU, MKD e MSG! Parece complicado, mas não é.
A maioria (tudo?) Fontes de aprendizado de PHP em Internet e livros (Nixon, Powers, Yank, Ullman ...) parecem simples, mas, na minha opinião, são bons apenas para Sintax básico e levam à codificação errada do esqueleto de menu e código CRUD, por isso são mais complicados que o B12PHPFW! O livro CMS Duckett 2022 é bom para aprender PHP, mas o exemplo do CMS não é tão bom. É um dos paradoxos da vida: "Ilusão, aparência da aparência".
MNU - Módulo de menu In /FWPHP /www Pasta
MKD - Módulo de Gerenciamento de Conteúdo Markdown em/FWPHP/Glomodul/MKD Pasta
MSG - Módulo CRUD MSG -BLOG IN/FWPHP/GLOMODUL/Blog, ... Usuário, ... Post_Category, ... Post, ... Post_Comment (tudo em Glomodul Dir).
Atualmente 2023.01.15, B12PHPFW Versão 10.0.0.0 "O mesmo adaptador DB do módulo para qualquer adaptador de banco de dados compartilhado". 10.0.0.0 significa:
Janeiro de 2023: Somente o módulo ADRS funciona no MySQL ou Oracle (11g) dB (nem todas as funcionalidades, mas o suficiente para ver claramente tudo importante). Não é difícil atualizar o módulo Addrs inteiro e o módulo MSG para a versão 10, mas leva muito tempo, então não estou com pressa, porque acho que atingi o objetivo do menu e o código do esqueleto CRUD B12PHPFW. Muito tempo na frase anterior significa que as ferramentas SW e os aplicativos de usuário exigem muito tempo para terminar se mudarmos alguma coisa. O melhor exemplo de como evitar esse código compartilhado (global), por exemplo, "o mesmo adaptador do módulo DB para qualquer adaptador de banco de dados compartilhado".
O objetivo da ferramenta B12PHPFW PHP SW é, com base em mais de vinte anos de trabalho com o Oracle Forms 6i, para criar uma ferramenta para sites *.php com a lógica como o Oracle Forms 6i.
MNU, Addrs ... As pastas (módulos) são como o Oracle Forms 6i *.fmb e .php são como programas dentro de alguns .fmb. Estou convencido de que essa abordagem é muito melhor do que três pastas M, V, C para todas as páginas ( .FMB), que me parece ser obra de autores de ferramentas SW que não têm experiência prática suficiente. Esses autores causaram muitos danos em nosso tempo (Microsoft, Oracle, todas as versões estúpidas do Linux e até do Windows).
http: // dev1: 8083/fwphp/glomodul/adrs/
Substitua http: // dev1: 8083 pelo seu endereço da web, por exemplo, http: // localhost b12 - abre a página inicial do módulo ADRS:
Home ....... Exemplo1 ....... Exemplo2 ....... endereços - Menu principal no módulo (ou site) HDR
Página inicial -Título da página
-Conteúdo da página:
Você está em vista: j: awww www fwphp glomodul adrs home.php
$ pp1-> module_relpath abaixo do site root = fwphp/glomodul/adrs
$ pp1-> module_url = http: // dev1: 8083/fwphp/glomodul/adrs/
B12PHPFW é diferente de outras estruturas (PHP) (esqueletos de menu e código CRUD). Principais (grandes) diferenças:
Cada módulo (é como o Oracle Forms6i .fmb) está em sua própria pasta, nem todos os módulos em 3 diretos: M, V, C.
Então, J: AWWW www fwphp glomodul adrs ... mini3 adrs ... nppSes
Contém scripts em apenas uma pasta do módulo ADRS: ADRS.
Os scripts globais estão em: j: awww www vendor b12phpfw pasta.
Os namespaces são funcionais, não posicionais (não a árvore Dir, que é desnecessária, mas o dir é suficiente!).
Por exemplo, namespace b12phpfw site_home www; ou B12PHPFW SITE2_HOME www (!) ou B12PHPFW Module adrs
1. B12PHPFW Módulo é parte funcional do espaço para nome - o que o script faz - podemos escrever aqui o que quisermos
2. ADRS é a pasta na qual o script é (j: awww www fwphp glomodul adrs home_ctr.php, http: // dev1: 8083/fwphp/glomodul/adrs/)
Logotipo do site (se desejar): em CSS Background: url ('dados: imagem/png; base64, ivborw0kggoaa ... qmcc');
-Module (ou site) rodapé:
Este é o Mini3 PHP FW no B12PHPFW com base no Mini3 no GitHub.
Esta página Exemplo1 URL (Web endereço - Nome da Web) é: http: // dev1: 8083/fwphp/glomodul/adrs/? I/ex1/onde ex1 é o método em casa cls.
O método EX1 inclui esta página = View cujo endereço operacional é: j: awww www fwphp glomodul adrs exemplo_one.php.
Esta página Exemplo2 aumenta dois parâmetros p1 = 'param1' e p2 = 'param2'. Esta página está incluída no método CLS ex2 doméstico. Esta página URL é: http: // dev1: 8083/fwphp/glomodul/adrs/? I/ex2/p1/param1/p2/param2/
Parte importante da propriedade de propriedade $ pp1 é urriq = url (uri) peças de consulta: [i] => ex2 em que ex2 é o método em casa CLS a ser chamado, que chama algum método ou inclui algum script [p1] => param1 Este é o método (script) parâmetro 1 [p2] => param2 Este é o método (script) parameter 2
URL Get Parâmetro P1 = Param1 URL Get Parâmetro P2 = Param2
Você está em vista: j: awww www fwphp glomodul adrs exemplo_two.php
Característica db_allsites função pública estática rrcnt chamado de "classe tbl_crud" tem problemas:
Depreciado: Chamando o método de característica estática B12PHPFW CORE B12PHPFW DB_ALLSITES :: RRCount está depreciado, ele só deve ser chamado em uma classe usando a característica - os autores do PHP não explicaram esse problema? Portanto, é a classe por enquanto (2022-07-03). (Regra boa e boa: não use recursos avançados de linguagem porque os autores de idiomas não testam as mudanças em detalhes suficientes!)
Há muito a aprender sobre o módulo ADRS. Se parece difícil tentar o primeiro mini3. O módulo MSG adiciona funcionalidade "mais módulos", que é a programação da vida real, não é fácil, mas necessária.
Saída da classe AUTOLOAD APÓS ALTERAMOS IF ('') {... para if ('1') {... Exibe o fluxo de código após clicar no botão "Endereços" ou em qualquer outro link.
Consulte Clean_architecture.md Onde está a imagem dos níveis de código em https://github.com/nazonohito51/clean-architecture-sample.
Experimente o arquivo MD Edit: http: // dev1: 8083/fwphp/glomodul/mkd/? I/showhtml/path/j: awww www clean_architecture.md
Top ...... dirs ..... uml ..... dm ..... ide ..... Crud ..... SW FW
Consulte https://help.github.com/en/github/writing-on-github https://git-scm.com/book/en/v2
ou por exemplo, https://git-scm.com/docs/git-checkout
J: Symenu ProgramFiles SPSSUITE Symenusuite CMDER_SPS
Vá para o seu diretório de trabalho ou pasta do projeto (se não o status Git diz: "Fatal: não é um repositório Git (ou qualquer um dos diretórios pais): .git").
Git Config -Usuário global.Name 'YourName'
Git Config-Global-Rereplace-All User.Email 'YourEmail'
Git Config-Local -l Instale o Git Credencial Manager para Windows para evitar o login em cada push-nas extensões cmder git (git update-git-for windows)
j: awww www (mestre -> origem)
ou git add fwphp (ou o que quer que o git peça) ou git add -a ou git add index.html
Armazenamos nossos arquivos de projeto em nosso disco rígido do sistema.
Se o cmder mostrar erro "Fatal: Incapaz de detectar automaticamente o endereço de e-mail": veja acima Git Config ...
Git Config -Global User.Email "[email protected]" e Git Config -Global User.Name "Your Name"
Para definir a identidade padrão da sua conta. Omita -Global para definir a identidade apenas neste repositório.
Armazenamos nossos arquivos de projeto em nosso site do GitHub.
Você deseja restaurar uma revisão antiga de um arquivo: Git Checkout 8A7B201 Index.html Se você especificar "cabeça" como a revisão, restaurará a última versão comprometida do arquivo, desfazendo efetivamente quaisquer alterações locais que você tenha nesse arquivo:
Git Checkout Head Index.html
Podemos reverter nossos arquivos excluídos no diretório de trabalho usando o comando:
checkout git -.
ou checkout git - Filemame ...
Git é o programa e o github é um tutorial do site - implantar (livro)
Git Usamos EG para sincronizar nossos scripts:
A partir de 13 de agosto de 2021, o GitHub não aceita mais senhas da conta ao autenticar operações Git no github.com e requer o uso de autenticação baseada em token , como um ** PAT, Token de acesso pessoal sobre HTTPS = PSW 40 caracteres (recomendado) ** para desenvolvedores) ou um GitTs AppTit. Você também pode continuar usando as teclas SSH onde prefere.
https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
λ Git Remote -V Saídas:
origem https: // [token]@github.com/slavkoss/fwphp.git (busca)
Origem https:/[token]@github.com/slavkoss/fwphp.git (push)
Portanto, apenas o último compromisso permanece e é o primeiro compromisso:
Salve seu .git/Config antes e restaure -o depois. (Eu o excluo na lixeira).
Meu PHP IDE é o pacote Zip Symenu como lançador para todos os SW listados abaixo (portátil, se possível):
Notepad ++ plugin de marcação
Copie o TmarkDownViewerPlusPlus.dll para o subpasta do plugins no seu diretório de instalação do bloco de notas ++.
O plug -in adiciona um pequeno ícone de marcação à barra de ferramentas para alternar o visualizador como painel prejudicável.
Em seguida, nas configurações da NPP -> importar -> Importar plugin (s).
Veja em j: awww www Globals nppSess File e outros arquivos NPPSESS.
MD para conversores HTML no INET:
Também bom, tudo portátil tudo em Symenu: bloco de notas-modos (2 Mb), Atom (524 Mb),
Código do Visual Studio (247 MB), Cudatext (28 MB), PSPAD (23 MB), RJ enviado por texto (416 MB),
Editores HTML Wysiwyg: Microsoft Expression Web (abandonado, mas ainda bom).
Evito Dreamveawer, Komposer (abandonado, muito velho).
Comandante :
é velho, mas melhor (Janne Huttunen) ou tudo similar, veja Symenu
Meinplatz (x64) (parte de programas portáteis Symenu) como o Treesize
ou multicomandante, Q-Dir, TotalCommander ...
NAVEGADOR :
Google Chrome, Cyberfox, Lua Pale
(em Symenu) é a Win CMD Line, tem git.
O Composer ajuda você a declarar, gerenciar e instalar dependências de projetos PHP.
Cliente ftp winscp . Ignorar: | *.zip; J: awww www.git; J: awww www vendor/b12phpfw/dbconn_allsites.php;
FTP Server Symenu's Serva Comunidade
Manual do PHP
Guia do estilo PHP
Tutorial PHP por W3Schools
O Guzzle é um cliente PHP HTTP que facilita o envio de solicitações HTTP e trivial para se integrar aos Serviços da Web.
DesignPatternsphp é uma coleção de padrões de design conhecidos e algum código de exemplo como implementá -los no Php 7.4. Todo padrão tem uma pequena lista de exemplos.
CMS portátil portátil com um poderoso sistema de gerenciamento de pacotes de plugins e temas e grave.
Guia PHP
_.-'''''-._
.' _ _ '.
/ (o) (o)
| |
| / |
'. .' /
'. ''---'' .'
'-._____.-'
mostra a estrutura das classes - atributos e métodos
Top ...... dirs ..... 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 Código Core.
Nível: todos os sites (o mesmo código para todos os sites ee compartilhados, global, comum)
( Modelo , AbstractEntity)
Classe dbconn_allsites. A característica é similar para a aula . Motivo de característica é a estrutura do código líquido:
Algumas turmas podem usar mais características - rede - mais pais, mas podem estender apenas uma hierarquia de classe.
Eu não uso característica - tive algum bug como o código avançado com frequência.
// see class script // see class script
Basicamente db_allsites.php Read (RR, relatório) funciona como o código em:
/awww/www/clean_architecture.md. Eu fiz isso na versão 10 de janeiro de 2023.
B12PHPFW Código Core.
Nível: todos os sites (o mesmo código para todos os sites ee compartilhados, global)
// see class script // see class script Para evitar inc. Comandos em muitos scripts
B12PHPFW Código Core.
Nível: todos os sites (o mesmo código para todos os sites ee compartilhados, global, comum)
// see class script // see script B12PHPFW Código do módulo.
Nível: Módulo (o mesmo código para pasta EE do módulo, por exemplo, mnu ou mkd ou msg = blog)
Para execução do programa, a hierarquia de classes é: como se todos os atributos e métodos nas classes acima do home_ctr estivessem na classe home_ctr. Ou seja, eles estão em $ esse objeto que é instanciado (criado na memória) em home_ctr (que parece conter todas as classes - descrições de atributos e métodos acima dele).
Por que os atributos e métodos compartilhados (comuns) estão na hierarquia acima do home_ctr e não no home_ctr?
Não queremos escrever em todos os scripts home_ctr o código compartilhado (comum) completo acima do home_ctr .
Top ..... Dirs ..... Uml ..... DM ..... ide ..... Crud ..... SW FW
Veja o código de informações:
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 é muito diferente do que (todos?) Outras estruturas PHP (eu prefiro "esqueletos de menu e código CRUD") porque:
dirs are like Oracle FORMS form module .fmb https://github.com/ngrt/MVC_todo - very good coding (but to simple example,no globals, no namespaces...) , shows usual PHP frameworks dirs and routing idea : ...glomodulz_examplesMVC_FWngrt_MVC_todo or many others in my MVC_FW Dir ou Pesquise Google: Github PHP Framework
e outros motivos mencionados abaixo
Consulte Mini3 PHP Framework https://github.com/panique/mini3, o que é excelente raro para o exemplo simples do MVC (lote da boa codificação). Meu roteamento usando valores-chave é diferente, mas despachar usando métodos de classe doméstica é baseado no mini3 .
B12PHPFW possui 3 módulos e alguns utilitários:
Top ...... dirs ..... uml ..... dm ..... ide ..... Crud ..... SW FW
Consulte Usando MKD FWPHP/GLOMODUL/MKD/02/01_FWPHP/PHP_DIP_DI.TXT
Top ...... dirs ..... uml ..... dm ..... ide ..... Crud ..... SW FW
Pode ser JQuery, Php, Bootstrap Ajax DB Linhas de tabela Crud é mais simples e mais rápido Crud, mas eu prefiro não jQuery, sem Ajax. Apenas JavaScript de que preciso é diálogo sim ou não.
Crud linhas na tabela música (#id, artista, faixa, link) . Mini3 Framework https://github.com/panique/mini3 é que é melhor aprender o esqueleto de código PHP e estrutura. Meu módulo ADRS no Glomodul Modules-Group é o mini3 no B12PHPFW. Por que ? Eu acho que para sites grandes mini3 é simples - sem compartilhamentos ...
Veja scripts.
Crud mais simples ..... index.php ..... home_ctr ..... home (página da tabela) ..... crie ..... leia (perfil de usuário - formulário) ..... Atualizar .... Adaptador
Precisamos de um único ponto de entrada no módulo para evitar bagunça com links (https: // ... links não são claros, melhores são incluídos e chamadas de método).
<?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 (página da tabela) ..... crie ..... leia (perfil de usuário - formulário) ..... Atualizar .... adaptador
. . .
* ------------------------------------------------------------------------------
* 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 (página da tabela ..... crie ..... leia (perfil do usuário - formulário) ..... Atualizar .... adaptador
<!-- 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 (página da tabela) ..... crie ..... leia (perfil de usuário - formulário) ..... Atualizar .... adaptador
<?php
// J:awwwwwwfwphpglomoduladrscre_row_frm.php
. . .index.php ..... index.php ..... home_ctr ..... home (página da tabela) ..... crie ..... leia (perfil do usuário - formulário ..... atualização .... adaptador
<?php
//J:awwwwwwfwphpglomoduladrsread_tbl.phpindex.php ..... index.php ..... home_ctr ..... home (página da tabela) ..... crie ..... leia (perfil de usuário - formulário) ..... Atualizar .... adaptador
<?php
// J:awwwwwwfwphpglomoduladrsupd_row_frm.phpSimpleStCrud index.php ..... index.php ..... home_ctr ..... home (página da tabela) ..... crie ..... leia (perfil do usuário - formulário) ..... Atualizar .... [adaptador]
<?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
Não é fácil ver precisando, por exemplo, para o código de conversão do módulo de usuário do MVC processual para OOP MVC com espaço para nomes e o código automático para navegação (URL -S, Links) é o mesmo - oOOP não ajuda. O código do módulo de usuário do MVC processual, por exemplo, pode ser mais claro e legível. Então, por que o OOP é melhor?
Alguns dizem: "O OOP é um erro?" - Por exemplo, falta de reutilização no OOP - para obter banana (algum método ou atributo) que você também obtém Gorilla segurando a banana e a selva de gorila inteiro (todas as classes superiores com dependências complicadas ).
Por exemplo, as interfaces ajudam a obter apenas banana, mas a codificação é complicada-eu consegui encontrar apenas exemplos de códigos de trabalho forte e de trabalho sobre esse assunto.
J: awww www vendor b12phpfw db_allsites_intf.php (17 hits) linha 15: função pública estática get_or_new_dball (string $ chamado_from = ' ligador desconhecido '); Linha 16: Função pública estática fechada BCONN (); Linha 17: função pública estática getdbi (); Linha 18: função pública estática setdo_pgnion ($ new_val); Linha 22 : // 11111 ******************* Função pública estática rr_last_id (string $ tbl, array $ outros = []): int ; objeto;
Line 45: // static public function pre_cc_uu( Line 56: static public function uu ( $tbl, $flds, $where, $binds = [] ) ; Line 62: // 33333 ******************** enterprise bussiness functions (rules, utilities) Line 64: static public function debugPDO(string $dmlxx, array $binds, array $ ph_val_arr): string;
Por exemplo, o módulo de fatura funciona com duas tabelas: fatura e fatura_items (ou três tabelas: Bill, Fatura, Fatura_items). "Solução mais simples" de três diretores M, V, C é ruim - :) - Os amantes do 3Dirs colocam a Coding Technik (M, V, C Código de separação) em primeiro plano, em vez das páginas (funcionalidade, lógica de negócios).
A banana RR não está mais na selva, gorila e selva são apenas uma classe abstrata config_allsites que é de fato $ pp1 = propriedades.
Banana $ pp1 = A paleta de propriedades pode causar dificuldades em módulos agregados (compostos, compostos, multiplex) como blog, fatura ... mas $ pp1 é inevitavelmente (iminência, necessidade) gorila-jungle e não pode ser simplificado. Eu trabalhei 20 anos em $ pp1 e na Jungle Globals (Oracle Forms 6i) não tão bem fundamentada como aqui.
Consulte https://phpthewrongway.com/, ou Joe Armstrong Por que oOP é uma merda http://harmful.cat-v.org/software/oo_programming/why_oo_sucks.
O B12PHPFW é baseado em idéias em muitos tutoriais, por exemplo, os próximos estão entre as melhores (mas também em algumas idéias nas melhores estruturas de PHP Laravel, Simfony, Yii, Phalcon ...).
Eu fiz o código B12PHPFW muito mais simples com base em idéias no blog JAZEB AKRAM CMS - Páginas Design e Mini3 Php FW - Skeleton Code , roteamento. Livros sobre exemplos de código PHP não são tão bons.
CMS Blog Video (7,7 GB) JAZEB AKRAM: UDEMY - O curso profissional completo do PHP MySQL com 5 projetos - raro não para um tutorial simples . Semelhante é o vídeo (12,3 GB) Edwin_diaz_php para iniciantes - Torne -se um projeto PHP Master - CMS. Também alguns outros vídeos - então parece que eles são os melhores/mais simples designs de página (não esqueletos de código) para postagens de blog CMS, mensagens. Os vídeos são enormes por razões comerciais para atingir o NUM_OF_GB EE $/GB, mas não há melhor código - há um estilo de programação mais antigo.
Mini3 (mini3 php fw https://github.com/panique/mini3 - raro não para um módulo simples de uma tabela, mas pode ter mais funcionalidade.
/GLOMODUL/Z_EXAMPOS/MVC_FW/HCSTUDIO_EASY/Public/TO Simples FW Exemplo, mas um bom código para aprender PHP (apenas leia o middleware do CRUD). Para roteamento e middleware complicados, por isso não é fácil!
https://github.com/ngrt/mvc_todo O código é explicado neste artigo blog 2017.12.17: https://medium.com/@noufel.gouirhate/create-your-own-mvc-framework-in-fp-f7bd1f0ca19
https://dev.to/jorgecc/a-minimalist-mvc-project-using-php-and-without-a-framework-4pd8
https://github.com/trpb/immutablemvc
Outro :
Fiz muitas mudanças (espero melhorias) que fiz porque não gosto de soluções propostas nas melhores estruturas de PHP e em fontes de aprendizado mencionadas acima (especialmente codificando o tutorial de Traversy). As ações (reutilizáveis, globais, incluem) não são bem explicadas e codificadas lá.
Eu acho que isso deve ser simples/rápido/profissional: compartilhamentos , roteamento, desacrimoragem, namespaces funcionais e carregamento de classes, edição de texto rico em web ...
É por isso que passei tantas horas nisso (desperdiçando um tempo enorme, o que deve fazer autores de ferramentas-software, não usuários de ferramentas-software como eu).
Esse esqueleto de código parece complicado em comparação com https://github.com/panique/***mini3***, que pode ser o melhor modelo de código FW para projetos menores (e aprender PHP).
Para grandes projetos , compartilhamentos - Globals - reutilizáveis que eu uso aqui são muito importantes, o mesmo que os módulos nas próprias pastas (nem todas em apenas 3 dirs m, v, c) .
Sobre ações (globais) Veja discussão:
https://medium.com/@sameryaupane/php-software-architecture-part-1-mvc-1c7bf042a695
https: //medium.co## 3.2m/@sameryaupane/php-software-architecture-part-2-the-alternatives-1bd54e7f7b6d
https://blog.ircmaxell.com/2014/11/alternatives-to-mvc.html
Durante o inverno de 2019/2020 ano (para muito tarde porque testei o que os outros fizeram), fiz a versão 6. On Menu e Crud Php Code Skeleton (estrutura própria chamada "B12PHPFW") - O código principal é de ~ 50 kb. Versão 7 .: Php 7 e Trait DBI é em outubro de 2020.
Por que ? Não gosto de soluções propostas nas melhores estruturas PHP (Laravel, Simfony, YII ...) e fontes de aprendizado (Internet, livros). Eu acho que o código PHP da fatura do módulo, por exemplo, deve estar em sua própria pasta, como o Oracle Forms Form Falluice.fmb (nem todos os formulários/relatórios em 3 pastas: M, V, C). Eu acho que isso deve ser simples/rápido/profissional: globais , roteamento, desacrimoragem, carregamento de aulas, edição de texto rico em web - é por isso que perdi muitas horas codificando meus B12Phpfw (desperdício de tempo enorme, que deve fazer autores de software, não usuários de SW como eu).
Por que não gosto de soluções propostas e o que fiz (espero) melhorá -las. Os recursos de cor vermelha são os principais motivos do B12PHPFW, mas eu melhorei também outros recursos. :
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).
| Recurso | 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) | tem | 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) | ideal | 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) | bom | could be better |
| 6. Global classes, methods etc (my opinion) | good see below CRUD test output | ruim |
| 7. (Posts edited with any) WYSIWYG editor | tem | 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 | tem | has like Mini3 |
| 10. namespaces (own PSR-4 (or Composer's) autoloading classes scripts) | melhorou | Mini3 has, TraversyMVC blog has not |
| 11. All scripts are included (ee no http jumps except some jumps in other module) | tem | Mini3 has, B12phpfw took it from Mini3, TraversyMVC blog has not |
| 12. jQuery only for Bootstrap 5 | sim | 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 | tem | tem |
| 15. authentification (log in / out) | tem | has not, TraversyMVC blog has |
| 16. authorization (only logged in users may execute some code ee CRUD code...) | tem | Mini3 has not, TraversyMVC blog has |
| 17. Own debugging very simple and useful : msg in pre tag or popup JS msg). xdebug also helps. | tem | has not |
| 18. PHP code here is good for (more) large sites | sim | não |
| 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.
Feito :
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.