TOP ..... 1.4 dris ..... 1.3 uml ..... 1.5 dm ..... IDE ..... 3。 Crud ..... SW FW
CRUDモジュールの例コード7スクリプト:
最もシンプルなcrud ..... index.php ..... home_ctr ..... home(テーブルページ)..... create ..... read(user profile -form)..... update .... adapter
B12PHPFW:XAMPP(Apache Web Server、MariadB)を使用して、(最新)Windows 10 64ビットの自宅PCで開発されました。 Windows Oracle Virtual Box Oracle Linux Virtual Machine(Apache Web Server)およびLinuxデモサイトでもテストされています。 B12PHPFWは、20年のPHPを趣味として学習した結果です(ただし、生産設備はありません)。
コード(信号)フローとデータフローを参照するか、ここに - 時間制限があるため機能しません。
fwphp-master.zipからの抽出物〜300 kb(b12phpfwコアは100 kb未満であり、多くの追加学習例と画像〜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
https://github.com/slavkoss/fwphpからダウンロードしてください
以下のパスの最初の "/"は "j: awww www " = "http:// dev1:8083/" = ownwebserver_or_hosting_docroot_path、例えばfirst "/" in "/vendor/b12phpfw"
フォルダー:ベンダー(亜鉛でしたが、亜鉛はもう存在しません、株式は/ベンダー /b12phpfwです)
phpmyadminページ:
私のsqlにインポートj: awww www fwphp glomodul blog_akram 01_phpcms.sql :最初の学習ステップ "1a。msgmysql" on msg mysql "on msg but out along programming styly名前空間、大きなサイトに役立つグローバル - 数百のモジュール)。
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 adrsモジュール - j: awww www fwphp glomodul www のmnuモジュールの横に2番目の学習ステップ。 ADRSは簡単な例ではありませんが、B12PHPFWメニューとCRUDコードスケルトンを学習するには十分ではありません!単純な学習モジュールではないのは、MNU、MKD、MSGモジュールです!複雑に思えますが、そうではありません。
インターネットと書籍のほとんど(すべて?)学習ソース(ニクソン、パワー、ヤンク、ウルマン...)は簡単に見えますが、私の意見では、基本的なシンタックスのみに適しており、メニューとCRUDコードのスケルトンの誤ったコーディングにつながるため、B12PHPFWよりも複雑です! Book CMS Duckett 2022年はPHPの学習に適していますが、CMSの例はそれほど良くありません。それは人生のパラドックスの一つです:「幻想、外観の類似」。
MNU-メニューモジュール /fwphp /wwwフォルダー
MKD -Markdown Content Management Module in/fwphp/glomodul/mkdフォルダー
MSG -/fwphp/glomodul/blog、... user、... post_category、... post、... post_comment(すべてGlomodul dir)。
現在、2023.01.15、B12PHPFWバージョン10.0.0.0 "共有DBアダプターの同じモジュールDBアダプター" "。 10.0.0.0は意味します:
2023年1月:ADRSモジュールのみがMySQLまたはOracle(11G)DBで動作します(すべての機能ではありませんが、すべてが重要であるとは明確に見るのに十分です)。 AddRSモジュールとMSGモジュール全体をバージョン10に更新するのは難しくありませんが、多くの時間がかかるため、メニューとCRUDスケルトンコードB12PHPFWの目標を達成したと思うので、急いでいません。前の文の多くの時間は、SWツールとユーザーアプリケーションが何かを変更すると終了するのに多くの時間が必要であることを意味します。これを回避する方法の最良の例は、共有(グローバル)コードなどの「共有DBアダプターの同じモジュールDBアダプター」です。
B12PHPFW PHP SWツールの目標は、Oracle Forms 6iでの20年以上の作業に基づいて、Oracle Forms 6iのようなロジックを使用して *.PHP Webサイトのツールを作成することです。
mnu、addrs ...フォルダー(モジュール)はOracle Forms 6i *.fmb、 .phpは.fmb内のプログラムのようなものです。このアプローチは、十分な実践的な経験を持たないSWツールの著者の作品であると思われるすべてのページ(.fmb)の3つのフォルダーm、v、cよりもはるかに優れていると確信しています。そのような著者は、私たちの時代に多くのダメージを与えてきました(Microsoft、Oracle、すべてのLinux愚かなバージョン、さらにはWindows)。
http:// dev1:8083/fwphp/glomodul/adrs/
http:// dev1:8083をWebアドレスに置き換えます。
ホーム.......例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 dirのすべてのモジュールではありません:m、v、C。
so: awww www fwphp glomodul adrs ... mini3 adrs ... nppses
1つのADRSモジュールフォルダーのみにスクリプトが含まれています:ADR。
グローバルスクリプトは次のとおりです。J: awww www vendor b12phpfw folder。
名前空間は機能的であり、位置的ではありません(dirツリーではありませんが、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');
- モジュール(またはサイト)フッター:
これは、GitHubのMini3に基づいたB12PHPFWのMINI3 PHP FWです。
このページExample1 URL(Web Adress -Web名)はhttp:// dev1:8083/fwphp/glomodul/adrs/?i/ex1/ex1がホームClsのメソッドです。
ex1メソッドには、このページが含まれます= oper.systemアドレスが次のように表示されます: 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/
プロパティパレット$ pp1の重要な部分はuriq = url(uri)queryパーツです:[i] => ex2ここで、ex2はホームClsのメソッドと呼ばれるメソッドです。
url get parameter p1 = param1 url get parameter p2 = param2
あなたは視野を入れています:j: awww www fwphp glomodul adrs embly_two.php
「クラスTBL_CRUD」から呼び出される静的パブリック関数RRCNTが問題を抱えています。
非推奨:静的特性法b12phpfw core b12phpfw db_allsites :: rrcountを呼び出すことは非推奨です。特性を使用してクラスでのみ呼び出されるべきです - PHP著者はこの問題を説明しませんでしたか?したがって、今のところクラスです(2022-07-03)。 (古い良いルール:言語著者が十分に詳細にテストしないため、高度な言語機能を使用しないでください!)
ADRSモジュールについて学ぶことがたくさんあります。難しいと思われる場合は、最初にmini3を試してください。 MSGモジュールは、実生活のプログラミングである「より多くのモジュール」機能を追加します。簡単ではなく、ネクタリーです。
if( ''){... if( '1'){...「アドレス」ボタンまたはその他のリンクをクリックした後にコードフローを表示するif( ''){... if( '1')に変更した後の出力。
https://github.com/nazonohito51/clean-architecture-sampleのコードレベル画像はClean_architecture.mdを参照してください。
MDファイルを編集してください:http:// dev1:8083/fwphp/glomodul/mkd/?i/showhtml/path/j: awww www clean_architecture.md
トップ......監督..... uml ..... dm ..... ide ..... crud ..... sw fw
https://help.github.com/en/github/writing-on-github https://git-scm.com/book/en/v2を参照してください
または例:https://git-scm.com/docs/git-checkout
j: symenu programfiles spssuite symenuite cmder_sps
ワーキングディレクトリまたはプロジェクトフォルダーに移動します(gitステータスではない場合は、「致命的:gitリポジトリ(または親のディレクトリのいずれ)ではありません:.git」)。
git config -global user.name 'yourname'
git config -global -replace-all user.email 'youremail'
git config - local -l各プッシュでのログインを避けるためにWindowsのGit資格情報マネージャー - cmder git拡張機能(git update-git-for-windows)
j: awww www(master-> origin)
またはgit add fwphp (または何でも尋ねるもの)またはgit add -aまたはgit add index.html
システムハードドライブ内にプロジェクトファイルを保存しました。
cmderにエラーが表示された場合、「致命的:電子メールアドレスを自動検出できない」:上記のgit config ...を参照してください...
git config -global user.email "[email protected]"およびgit config -global user.name "your name"
アカウントのデフォルトのIDを設定します。省略-GlobalこのリポジトリでのみIDを設定します。
GitHubサイト内にプロジェクトファイルを保存しました。
ファイルの古いリビジョンを復元する必要があります:gitチェックアウト8A7B201 index.html「ヘッド」を改訂として指定すると、ファイルの最後のバージョンを復元し、現在のファイルにあるローカル変更を効果的に元に戻すことができます。
Git Checkout Head index.html
コマンドを使用して、作業ディレクトリで削除されたファイルをロールバックできます。
gitチェックアウト - 。
またはGit Checkout- FileMame ...
gitはプログラムであり、githubはsite -deploy(book)チュートリアルです
git例えば、スクリプトを統合するために使用します。
2021年8月13日から、GithubはGithub.comでGIT操作を認証する際にアカウントのパスワードを受け入れなくなり、** 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
λGitRemite-V出力:
Origin https:// [token]@github.com/slavkoss/fwphp.git(fetch)
Origin https:/[token]@github.com/slavkoss/fwphp.git(push)
したがって、最後のコミットのみが残り、それは最初のコミットです:
.git/configを前に保存し、後に復元します。 (リサイクルビンで削除します)。
私のPHP IDEは、以下にリストされているすべてのSW(可能であればポータブル)のランチャーとしてのSymenenu zipパッケージです。
Notepad ++ Markdownプラグイン
notepad ++インストールディレクトリのプラグインサブフォルダーにtmarkdownviewerplusplus.dllをコピーします。
プラグインは、ツールバーに小さなマークダウンアイコンを追加して、ドッキング可能なパネルとしてビューアーを切り替えます。
次に、NPP設定 - >インポート - >プラグインをインポートします。
j: awww www globals nppsessファイルおよびその他のnppsessファイルを参照してください。
INETでのMDからHTMLコンバーターへ:
また、すべてがsymenuにあるすべてのポータブル:notepad2-mod(2 mb)、atom(524 mb)、
Visual Studio Code(247 MB)、CudateXt(28 MB)、PSPAD(23 MB)、RJテキスト(416 MB)、
HTML wysiwygエディター: Microsoft Expression Web (放棄されたがまだ良い)。
私はDreamveawer、Komposer(放棄され、古すぎます)を避けます。
司令官:
古いですが、最高です(Janne Huttunen)またはSimmilarすべて、Symenuを参照してください
Meinplatz (x64)(Symenu Portableプログラムの一部)は、木のようなものです
またはマルチコマンダー、Q-Dir、TotalCommander ...
ブラウザ:
Google Chrome、Cyberfox、Pale Moon
(Symenuでは)Win CMDライン、Gitがあります。
作曲家は、PHPプロジェクトの依存関係を宣言、管理、およびインストールするのに役立ちます。
FTPクライアントWINSCP 。無視:| *。ジップ; J: awww www.git; J: awww www vendor/b12phpfw/dbconn_allsites.php;
FTPサーバーSymenuのServaコミュニティ
PHPマニュアル
PHPスタイルガイド
w3schoolsによるPHPチュートリアル
GuzzleはPHP HTTPクライアントであり、HTTPリクエストを簡単に送信し、Webサービスと統合するための些細なことです。
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コアコード。
レベル:すべてのサイト(すべてのサイトで同じコードが共有され、グローバル、一般的です)
(モデル、抽象性)
クラスdbconn_allsites。特性はクラスに似ています。特性の理由はネットコード構造です:
一部のクラスはより多くの特性を使用する場合があります -ネット- より多くの親ですが、1つのクラスの階層のみを拡張する場合があります。
私は特性を使用しません - 高度なコードが頻繁に持っているように、いくつかのバグがありました。
// see class script // see class script
基本的にdb_allsites.php read(rr、report)は次のように動作します。
/awww/www/clean_architecture.md。 2023年1月10日バージョン10でやった。
B12PHPFWコアコード。
レベル:すべてのサイト(すべてのサイトの同じコードEEが共有、グローバル)
// see class script // see class script多くのスクリプトでコマンドを避けるため
B12PHPFWコアコード。
レベル:すべてのサイト(すべてのサイトで同じコードが共有され、グローバル、一般的です)
// see class script // see script B12PHPFWモジュールコード。
レベル:モジュール(モジュールEEフォルダーの同じコード、例:MNUまたはMKDまたはMSG =ブログ)
プログラムの実行の場合、クラスの階層は次のとおりです。まるでHome_Ctr上のクラスのすべての属性とメソッドがHome_Ctrクラスにあるかのようです。つまり、それらはhome_ctrにインスタンス化された(メモリで作成)このオブジェクトにあります(すべてのクラスが含まれているようです - その上の属性とメソッドの説明)。
home_ctrではなく、home_ctrの上の階層に共有(共通)属性とメソッドがなぜですか?
すべてのhome_ctrスクリプトに、home_ctrの上に完全な共有(共通)コードを書きたくありません。
トップ..... dir ..... 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コードスケルトン」が好きです)。
Oracle forms form module .fmb https://github.com/ngrt/mvc_todo-非常に良いコーディング(ただし、単純な例には、グローバル、名前空間なし...)は、通常のPHPフレームワークとルーティングアイデアを示しています:... Glomodul z_examples MVC_FW DIRまたは検索Google:GitHub PHPフレームワーク
以下に説明するその他の理由
Mini3 PHPフレームワークhttps://github.com/panique/mini3を参照してください。キー価値を使用した私のルーティングは異なりますが、ホームクラスの方法を使用したディスパッチは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のみがダイアログはいまたはいいえです。
テーブルソングのクラッドの列(#ID、アーティスト、トラック、リンク) 。 MINI3フレームワークhttps://github.com/panique/mini3は、PHPおよびFrameworksコードスケルトンを学ぶのが最善だと思います。 Glomodul Modules-Groupの私のADRSモジュールは、B12PHPFWのMini3です。なぜ ?大規模なサイトの場合、mini3はシンプルです- 共有はありません...
スクリプトを参照してください。
最もシンプルなcrud ..... index.php ..... home_ctr ..... home(テーブルページ)..... create ..... read(user profile -form)..... update .... adapter
リンクとの混乱を避けるために、モジュールの単一のエントリポイントが必要です(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(テーブルページ)..... create ..... read(user profile- form)..... update .... adapter
. . .
* ------------------------------------------------------------------------------
* 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(テーブルページ..... create ..... read(user profile -form)..... update .... adapter
<!-- 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(テーブルページ)..... create ..... read(user profile- form)..... update .... adapter
<?php
// J:awwwwwwfwphpglomoduladrscre_row_frm.php
. . .index.php ..... index.php ..... home_ctr ..... home(テーブルページ)..... create ..... read(user profile -form ..... update .... adapter
<?php
//J:awwwwwwfwphpglomoduladrsread_tbl.phpindex.php ..... index.php ..... home_ctr ..... home(テーブルページ)..... create ..... read(user profile- form)..... update .... adapter
<?php
// J:awwwwwwfwphpglomoduladrsupd_row_frm.phpSimplestCrud index.php ..... index.php ..... home_ctr ..... home(テーブルページ)..... create ..... read(user profile -form).....更新.... [adapter]
<?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にnamespacesおよび自動装置用のNavigation(URL -S、Links)コードをコンバージョンする必要があることは容易ではありません - OOPは役に立ちません。手続き上のMVC EGユーザーモジュールコードは、より明確で読みやすい場合があります。では、なぜOOPが優れているのですか?
「OOPは間違いですか?」と言う人もいます。 - たとえば、 OOPの再利用性の欠如- バナナ(ある方法または属性)を取得するために、バナナとGorillaのジャングル全体(複雑な依存関係を持つすべての高級クラス)を保持しているGorillaも取得します。
たとえば、インターフェイスはバナナのみを取得するのに役立ちますが、コーディングは複雑です - この主題に関する強力なワークワークコードの例のみを見つけることができました。
j: awww www vendor b12phpfw db_allsites_intf.php (17ヒット)行15:静的パブリック関数get_or_new_dball (String $ call_from = ' nown caller '); 16行目:静的パブリック関数closedbconn(); 17行目:静的パブリック関数getDbi(); 18行目:静的パブリック機能setDo_pgntion($ new_val); 22行目:// 11111 ****************** r関数:行24:静的パブリック関数get_cursor (// object $ pp1 //静的パブリック関数rr_last_id(string $ tbl、array $ other = []):// static public function rrcnt(string $ tbl 、array $ other = []:int;オブジェクト; // tbl行を作成します
行45://静的パブリック関数pre_cc_uu(行56:静的パブリック関数UU ($ tbl、$ flds、$ where、$ binds = []);行62:// 33333 ************************** $ ph_val_arr):string;
たとえば、Invoiceモジュールは、請求書とInvoice_Items(または3つのテーブル、請求書、Invoice_Items)の2つのテーブルで動作します。 Simmilal "Simplest Solution" 3 dirs m、v、cは悪い - :) -3dirs愛好家は、コードテクニック(m、v、cコード分離)を前景に置きます。代わりにページ(機能、ビジネスロジック)。
RRバナナはもうジャングルにはありません。ゴリラとジャングルは、事実上$ pp1 =プロパティである抽象クラスconfig_allsitesの1つにすぎません。
Banana $ PP1 =プロパティパレットは、ブログ、請求書などの総合的な(化合物、構成、多重)モジュールの困難を引き起こす可能性があります...しかし、$ PP1は必然的に(差し迫った、必要性)ゴリラジャングルであり、さらに簡素化することはできません。私は20年間$ PP1で働いていましたが、Globals Jungle(Oracle Forms 6i)はこれほどうまく敷かれていません。
https://phpthewrongway.com/、またはJoe Armstrong Why Opがhttp://harmful.cat-v.org/software/oo_programming/why_oo_sucksを参照してください。
B12PHPFWは、多くのチュートリアルのアイデアに基づいています。たとえば、次のいくつかは最高の1つです(Best PHP Frameworks Laravel、Simfony、Yii、Phalconなどのいくつかのアイデアについても)。
Jazeb Akram CMSブログのアイデアに基づいて、よりシンプルなB12PHPFWコード -ページデザインとMINI3 PHP FW-コードスケルトン、ルーティング。 PHPコードの例に関する本はそれほど良くありません。
CMSブログビデオ(7.7 GB)Jazeb Akram:Udemy -5つのプロジェクトを備えた完全なPHP MySQLプロフェッショナルコース -シンプルなチュートリアルから珍しい。同様のビデオ(12.3 GB)EDWIN_DIAZ_PHPが初心者向けです。PHPマスター-CMSプロジェクトになります。また、他のいくつかのビデオ - CMSブログEEの投稿、メッセージのための最良/最も単純なページデザイン(コードスケルトンではない)のようです。ビデオは、より高いnum_of_gb ee $/gbに到達するための商業上の理由で巨大ですが、最適なコードはありません - 古いプログラミングスタイルがあります。
MINI3 (MINI3 PHP FW https://github.com/panique/mini3-単純な1つのテーブルモジュールではなく、より多くの機能がある可能性があります。
/glomodul/z_examples/mvc_fw/hcstudio_easy/public/to simple fwの例ですが、PHPを学習するための優れたコード(CRUDの読み取りのみ)、ミドルウェアについて説明しました。複雑なルーティングとミドルウェアには、簡単ではありません!
https://github.com/ngrt/mvc_todoコードは、この記事ブログ2017.12.17:https://medium.com/@noufel.gouirhate/create-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チュートリアルなど)で提案されたソリューションが好きではないので、多くの変更を加えました(私は改善を望みます)。株式(再利用可能な、グローバル、含まれる)は、そこでよく説明されてコーディングされていません。
それはシンプル/高速/専門家であるべきだと思います:共有、ルーティング、ディスパッチ、機能的な名前空間とクラスの読み込み、Webリッチテキスト編集...
これが私がこれに何時間も費やした理由です(私のようなツールソフトウェアユーザーではなく、ツールソフトウェアの著者を行うはずです)。
このコードスケルトンは、小規模プロジェクト(および学習PHP)に最適なFWコードテンプレートである可能性があるhttps://github.com/panique/***Mini3***と比較して複雑に見えます。
大規模なプロジェクトの共有 - グローバル - ここで使用する再利用可能なものは、独自のフォルダーのモジュールと同じで非常に重要です(すべてが3 dir 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-alternatives-1bd54e7f7b6d
https://blog.ircmaxell.com/2014/11/alternatives-to-mvc.html
2019/2020年の冬(他の人がしたことをロットにテストしたため、非常に遅くまで)に、メニューとCRUD PHPコードスケルトン(「B12PHPFW」という名前の独自のフレームワーク)のバージョン6を作成しました - コアコードは〜50 kbです。バージョン7。:PHP 7および特性DBIは2020年10月です。
なぜ ? Best PHP Frameworks(Laravel、Simfony、Yii ...)と学習ソース(インターネット、書籍)で提案されたソリューションが好きではありません。 EG Module Invoice PHPコードは、Oracle Forms form Invoice.fmbのような独自のフォルダーにある必要があると思います(M、V、Cの3つのフォルダーのすべてのフォーム/レポートではありません)。グローバル、ルーティング、ディスパッチ、クラスの読み込み、Webリッチテキスト編集など、シンプル/高速/プロフェッショナルであるべきだと思います。だからこそ、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) | optimal | 多くの人に |
| 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.