Oben ..... 1,4 Dirs ..... 1.3 Uml ..... 1,5 dm ..... ide ..... 3. CRUD ..... SW FW
CRUD -Modul Beispiel Code 7 Skripte:
Einfachster CRUD ..... INDEX.PHP ..... HOME_CTR ..... HOME (Tabellenseite) ..... erstellen ..... lesen (Benutzerprofil - Formular) ..... Aktualisieren Sie .... Adapter
B12PHPFW: entwickelt auf dem Home -PC auf (neuestem) Windows 10 64 -Bit mit XAMPP (Apache Web Server, Mariadb). Getestet auch unter Windows Oracle Virtual Box Oracle Linux Virtual Machine (Apache Web Server) und auf Linux -Demo -Sites. B12PHPFW ist das Ergebnis von 20 Jahren LernpHP als Hobby (aber ich habe keine Produktionsanlagen).
Siehe Code (Signale) Fluss und Datenfluss oder hier - funktioniert nicht, weil die Zeit begrenzt ist.
Extrakt aus FWPHP-Master.zip nur ~ 300 kb (B12PHPFW-Kern ist weniger als 100 kb, mit vielen zusätzlichen Lernbeispielen und Bildern ~ 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
Laden Sie von https://github.com/slavkoss/fwphp herunter
Das erste "/" in den folgenden Pfaden ist "j: awww www " = "http: // dev1: 8083/" = ownwebserver_or_hosting_docroot_path, z. B. First "/" in "/Vendor/B12Phpfw"
Ordner: Anbieter (war Zink, jetzt zink nicht mehr existieren, Aktien sind in /Anbieter /B12PHPFW )
In phpmyadmin Seite:
importieren Namespaces, Globale, die für große Websites nützlich sind - Hunderte von Modulen).
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 ist ADRS -Modul - Zweiter Lernschritt neben Mnu -Modul in j: awww www fwphp glomodul www . ADRS ist nicht zu einfachem Beispiel, reicht aber nicht aus, um das B12PHPFW -Menü und das CRUD -Code -Skelett zu lernen! Genug, um nicht einfache Lernmodule zu lernenden, sind MNU-, MKD- und MSG -Module! Scheint kompliziert, aber nicht.
Die meisten (alle?) PHP -Lernquellen im Internet und Bücher (Nixon, Powers, Yank, Ullman ...) scheinen einfach zu sein, sind aber meiner Meinung nach nur für die grundlegende Sintax gut und führen zu einer falschen Codierung von Menü- und Crud -Code -Skelett, also sind so komplizierter als B12PHPFW! Buch CMS Duckett 2022 Jahr ist gut zum Lernen von PHP, aber CMS -Beispiel ist nicht so gut. Es ist eine von Lebensparadoxien: "Illusion, Anschein des Aussehens".
MNU - Menümodul in /fwPhp /www Ordner
MKD - Markdown -Content -Management -Modul in/fwPhp/Glomodul/MKD -Ordner
MSG - CRUD MSG -Blog -Modul in/fwphp/glomodul/blog, ... Benutzer, ... post_category, ... post, ... post_comment (alle in glomodul dir).
Derzeit 2023.01.15, B12PHPFW Version 10.0.0.0 "Gleiches Modul -DB -Adapter für jeden gemeinsam genutzten DB -Adapter". 10.0.0.0 bedeutet:
Januar 2023: Nur das ADRS -Modul funktioniert auf MySQL oder Oracle (11G) DB (nicht alle Funktionen, aber genug, um alles wichtig zu sehen). Es ist nicht schwer, das gesamte AdDRS -Modul und das MSG -Modul auf Version 10 zu aktualisieren, aber es dauert viel Zeit, also habe ich es nicht eilig, weil ich glaube, ich habe das Ziel des Menüs und des CRUD -Skelettcode B12PHPFW erreicht . Eine Menge Zeit im vorherigen Satz bedeutet, dass SW -Tools und Benutzeranwendungen viel Zeit für das Fertigstellen benötigen, wenn wir etwas ändern. Das beste Beispiel dafür, wie Sie dies vermeiden können, ist gemeinsamer (globaler) Code, z.
Das Ziel des B12PHPFW -PHP -SW -Tools ist es, über zwanzig Jahre Arbeit mit Oracle Forms 6i zu basieren, um Tool für *.php -Websites mit der Logik wie Oracle Forms 6i zu erstellen.
MNU, ADDRS ... Ordner (Module) sind wie Oracle Forms 6i *.fmb und .php sind wie Programme in einigen .fmb. Ich bin überzeugt, dass dieser Ansatz für alle Seiten (.fmb) viel besser ist als drei Ordner M, V, C, was mir die Arbeit von Autoren von SW -Tools zu sein scheint, die nicht über genügend praktische Erfahrungen verfügen. Solche Autoren haben in unserer Zeit viel Schaden angerichtet (Microsoft, Oracle, alle Linux -dummen Versionen und sogar Windows).
http: // dev1: 8083/fwphp/glomodul/adrs/
Ersetzen Sie http: // Dev1: 8083 durch Ihr Web -Adressen z.
Startseite ....... Beispiel1 ....... Beispiel2 ....... Adressen - Hauptmenü in Modul (oder Site) HDR
Homepage -Page -Titel
-PAGE-Inhalt:
Sie sind im Blick: J: awww www fwphp glomodul adrs home.php
$ pp1-> module_relpath unterhalb von Site root = fwPhp/glomodul/adrs
$ pp1-> module_url = http: // dev1: 8083/fwphp/glomodul/adrs/
B12PHPFW ist von anderen (PHP-) Frameworks (Menü- und Crud -Code -Skelette) unterschiedlich. Hauptunterschiede (große) Unterschiede:
Jedes Modul (wie Oracle forms6i .fmb) befindet sich in einem eigenen Ordner, nicht alle Module in 3 Dirs: M, V, C.
Also j: awww www fwphp glomodul adrs ... mini3 adrs ... nppses
Enthält Skripte in nur einem ADRS -Modulordner: ADRS.
Globale Skripte finden Sie in: J: awww www Vendor B12Phpfw Ordner.
Namespaces sind funktional und nicht positional (kein Dir -Baum, der unnötig ist, aber Dir ist ausreichend!).
Z. oder B12PHPFW SITE2_HOME WWW (!) Oder B12PHPFW MODUL ADRS
1. B12PHPFW Modul ist funktionaler Teil des Namespace - Was das Skript tut - wir können hier schreiben, was auch immer wir wünschen
2. ADRS ist ein Ordner, in dem das Skript ist (j: awww www fwphp glomodul adrs home_ctr.php, http: // dev1: 8083/fwphp/glomodul/adrs/))
Site -Logo (falls Sie möchten): In CSS -Hintergrund: URL ('Daten: Image/PNG; Base64, ivborw0kggoaa ... QMCC');
-Modul (oder Site) Fußzeile:
Dies ist Mini3 PHP FW auf B12PHPFW basierend auf Mini3 auf GitHub.
Diese Seite Beispiel1 URL (Web -Adress - Webname) lautet: http: // dev1: 8083/fwPhp/glomodul/adrs/? I/ex1/wobei EX1 Methode in Home CLS ist.
Die Ex1 -Methode enthält diese Seite = Ansicht, deren Oper.System -Adress: j: awww www fwPhp glomodul adrs example_one.php.
Diese Seite Beispiel2 wird zwei Parameter p1 = 'param1' und p2 = 'param2' reciviert. Diese Seite ist mit der Home CLS EX2 -Methode enthalten. Diese Seite URL ist: http: // dev1: 8083/fwphp/glomodul/adrs/? I/ex2/p1/param1/p2/param2/
Important part of Property pallette $pp1 is uriq = URL (URI) query parts : [i] => ex2 where ex2 is method in Home cls to be called which calls some method or includes some script [p1] => param1 This is method (script) parameter 1 [p2] => param2 This is method (script) parameter 2
URL GET Parameter P1 = Param1 URL RET -Parameter P2 = Param2
Sie sind in Ansicht: J: awww www fwphp glomodul adrs example_two.php
Merkmal db_allsites statische öffentliche Funktion rrcnt aus "Klasse TBL_CRUD" auf dem Laufenden:
Veraltet: Aufrufen der statischen Merkmalsmethode B12PHPFW CORE B12PHPFW DB_ALLSITES: Es ist also für den Moment eine Klasse (2022-07-03). (Alte gute Regel: Verwenden Sie keine erweiterten Sprachfunktionen, da Sprachautoren die Änderungen nicht ausreichend detailliert testen!)
Es gibt viel über das ADRS -Modul zu lernen. Wenn es schwierig erscheint, versuchen Sie es mit dem ersten Mini3. Das MSG -Modul fügt "mehr Module" -Funktionalität hinzu, bei der es sich um eine echte Programmierung handelt, nicht einfach, aber merkwürdig.
Ausgabe aus der Autoload -Klasse, nachdem wir geändert haben, wenn ('') {... to if ('1') {... Zeigt den Codefluss an, der auf die Schaltfläche "Adressen" oder auf einen anderen Link klickt.
Siehe Clean_architecture.md Wo ist Code-Ebenen Bild von https://github.com/nazonohito51/clean-architecture-sample.
Versuchen Sie, die MD -Datei zu bearbeiten: http: // dev1: 8083/fwphp/glomodul/mkd/? I/showtml/path/j: awww www clean_architecture.md.md
Top ...... Dirs ..... uml ..... DM ..... ide ..... crud ..... sw fw
Siehe https://help.github.com/en/github/writing-on-github https://git-scm.com/book/en/v2
oder zB https://git-scm.com/docs/git-checkout
J: symenu programFiles spssuite symenusuite cmder_spsps
Gehen Sie zu Ihrem Arbeitsverzeichnis oder Projektordner (falls Git Status: "Fatal: kein Git -Repository (oder eines der übergeordneten Verzeichnisse): .Git").
Git config -Global user.name 'yourname'
Git config --global-Replace-All User.Email 'YourEmail'
GIT-Konfiguration-Local -l Installieren Sie GIT-Anmeldeinformationsmanager für Windows, um sich bei jedem Push-in Cmder Git-Erweiterungen anzumelden (GIT-Update-für-Windows).
J: awww www (Master -> Ursprung)
oder Git fügen Sie FWPHP (oder was auch immer Git fragt) oder Git -add -a oder git hinzufügen index.html hinzufügen
Wir haben unsere Projektdateien in unserer Systemfestplatte gespeichert.
Wenn Cmder Fehler "Fatal: Die automatische Erstellung von E-Mail-Adresse nicht erstellt": Siehe oben Git-Konfiguration ...
Git config --global user.email "youxample.com" und git config --global user.name "Ihr Name"
So legen Sie die Standardidentität Ihres Kontos fest. Auslösen -Global, um die Identität nur in diesem Repository festzulegen.
Wir haben unsere Projektdateien in unserer Github -Site gespeichert.
Sie möchten eine alte Überarbeitung einer Datei wiederherstellen: Git Checkout 8A7B201 INDEX
Git Checkout Head Index.html
Mit dem Befehl können wir unsere gelöschten Dateien im Arbeitsverzeichnis zurückrollen:
Git Checkout -.
oder Git Checkout - Filemame ...
Git ist Programm und GitHub IS Site - Bereitstellung (Buch) Tutorial
Git Wir verwenden EG, um unsere Skripte zu synkronisieren:
Ab dem 13. August 2021 akzeptiert Github keine Kontokennwörter mehr, wenn sie Git-Operationen auf Github.com authentifiziert haben, und erfordert die Verwendung einer tokenbasierten Authentifizierung , wie z. Sie können auch weiterhin SSH -Tasten verwenden, wo Sie es bevorzugen.
https://docs.github.com/en/github/authenticating-to-github/keeping-your-count-data-secure/creeating-a-personal-access-teken
λ Git Remote -v -Ausgänge:
Origin https: // [token]@github.com/slavkoss/fwphp.git (Fetch)
Origin https:/[token]@github.com/slavkoss/fwphp.git (push)
Nur das letzte Komitee bleibt also und es ist erstes Commit:
Speichern Sie Ihre .git/config zuvor und stellen Sie sie nachher wieder her. (Ich lösche es in Recycle Bin).
Mein PHP IDE ist ein SMENU -ZIP -Paket als Launcher für alle unten aufgeführten SW (nach Möglichkeit tragbar):
Notepad ++ Markdown -Plugin
Kopieren Sie tmarkdownViewerPluSplus.dll in den Plugins-Unterordner in Ihrem Notepad ++ -Anstallationsverzeichnis.
Das Plugin fügt der Symbolleiste ein kleines Markus -Symbol hinzu, um den Betrachter als Dockable -Panel zu umschalten.
Dann in NPP -Einstellungen -> importieren -> Plugin importieren.
Siehe in J: awww www globals nppSess -Datei und andere NPPSESS -Dateien.
MD zu HTML -Konvertern auf INET:
Auch gut, alles tragbar in Symenu: Notepad2-mod (2 MB), Atom (524 MB),
Visual Studio Code (247 MB), Cudatext (28 MB), PSPAD (23 MB), RJ SMS (416 MB),
HTML Wysiwyg Editoren: Microsoft Expression Web (verlassen, aber immer noch gut).
Ich vermeide DreamVeaun, Komposer (verlassen, zu alt).
Kommandant :
ist alt, aber am besten (Janne Huttunen) oder Simmilar alles siehe Symenu
Meinplatz (x64) (Teil von symanu tragbaren Programmen) wie treesize
oder Multicommander, Q-Dir, TotalCommander ...
Browser :
Google Chrome, Cyberfox, Pale Moon
(in Symenu) ist eine Gewinn -CMD -Linie, hat Git.
Der Komponist hilft Ihnen dabei, Abhängigkeiten von PHP -Projekten zu deklarieren, zu verwalten und zu installieren.
FTP -Client WinSCP . Ignorieren: | *.Reißverschluss; J: awww www.git; J: awww www Vendor/B12Phpfw/dbconn_allssite.php;
Die Serva -Community von FTP Server Symenu
PHP -Handbuch
PHP Style Guide
PHP -Tutorial von W3Schools
Guzzle ist ein PHP -HTTP -Client, mit dem HTTP -Anfragen und trivial für die Integration in Webdienste einfach gesendet werden können.
DesignPatternSPHP ist eine Sammlung bekannter Entwurfsmuster und ein Beispielcode, wie sie in PHP 7.4 implementiert werden. Jedes Muster hat eine kleine Liste von Beispielen.
Grav tragbares CMS mit flachem Datei mit leistungsstarkem Paketmanagementsystem von Plugins und Themen und Grav selbst.
PHP -Leitfaden
_.-'''''-._
.' _ _ '.
/ (o) (o)
| |
| / |
'. .' /
'. ''---'' .'
'-._____.-'
Zeigt Klassenstruktur - Attribute und Methoden
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 -Kerncode.
Stufe: Alle Websites (der gleiche Code für alle Websites EE Shared, Global, Common)
( Modell , Abstractentity)
Klasse dbconn_allSite. Das Merkmal ist der Klasse . Grund für das Merkmal ist die Netto -Code -Struktur:
Einige Klasse kann mehr Eigenschaften verwenden - Netz - mehr Eltern, aber nur eine Klasse - Hierarchie .
Ich benutze kein Merkmal - hatte einen Fehler, wie es häufig erweiterte Code hat.
// see class script // see class script
Grundsätzlich funktioniert db_allssite.php read (rr, melden) wie der Code in:
/awww/www/clean_architecture.md. Ich habe es in Version 10 Jan. 2023 gemacht.
B12PHPFW -Kerncode.
Stufe: Alle Websites (der gleiche Code für alle Websites EE Shared, Global)
// see class script // see class script Um in vielen Skripten Befehle zu vermeiden
B12PHPFW -Kerncode.
Stufe: Alle Websites (der gleiche Code für alle Websites EE Shared, Global, Common)
// see class script // see script B12PHPFW -Modulcode.
Stufe: Modul (gleiche Code für Modul EE -Ordner, z. B. MNU oder MKD oder MSG = Blog)
Für die Programmausführung lautet die Klassenhierarchie: als ob alle Attribute und Methoden in Klassen über Home_ctr in der Home_ctr -Klasse liegen. Das heißt, sie sind in $ dieses Objekt , das in Home_ctr instanziiert (im Speicher erstellt) (das anscheinend alle Klassen zu enthalten scheint - Beschreibungen von Attributen und Methoden darüber).
Warum sind die gemeinsam genutzten (gemeinsamen) Attribute und Methoden in der Hierarchie über home_ctr und nicht in home_ctr?
Wir möchten nicht in jedem Home_ctr -Skript den vollständigen gemeinsam genutzten (gemeinsamen) Code über Home_ctr schreiben .
Top ..... Dirs ..... uml ..... DM ..... ide ..... crud ..... sw fw
Siehe Info Code:
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 ist sehr unterschiedlich als (alle?) Andere PHP -Frameworks (ich bevorzuge "Menü- und Crud -Code -Skelette"), weil:
Dirs sind wie Oracle -Formulare Formmodul. MVC_FW DIR oder Suchen Sie Google: GitHub PHP Framework
und andere unten erwähnte Gründe
Siehe Mini3 PHP -Framework https://github.com/panique/mini3, was hervorragend selten ist, kein einfaches MVC -Beispiel (viel gutes Codieren). Mein Routing mit Schlüsselwerten ist unterschiedlich, aber die Versand mit Homer-Class-Methoden basiert auf Mini3 .
B12PHPFW verfügt über 3 Module und einige Dienstprogramme:
Top ...... Dirs ..... uml ..... DM ..... ide ..... crud ..... sw fw
Siehe Verwendung von MKD FWPHP/Glomodul/MKD/02/01_FWPHP/PHP_DIP_DI.TXT
Top ...... Dirs ..... uml ..... DM ..... ide ..... crud ..... sw fw
Kann JQuery, PHP, Bootstrap Ajax DB Table Zeilen sein. Nur JavaScript benötige ich Dialog Ja oder Nein.
Crudreihen in Table Song (#ID, Künstler, Track, Link) . Mini3 Framework https://github.com/panique/mini3 ist ich denke, dass ich am besten PHP- und Frameworks -Code -Skelett lernen kann . Mein ADRS-Modul in der Glomodul-Modulengruppe ist mini3 auf B12PHPFW. Warum ? Ich denke , für große Websites ist Mini3 zu einfach - keine Aktien ...
Siehe Skripte.
Einfachster CRUD ..... INDEX.PHP ..... HOME_CTR ..... HOME (Tabellenseite) ..... erstellen ..... lesen (Benutzerprofil - Formular) ..... Aktualisieren Sie .... Adapter
Wir benötigen einen einzelnen Einstiegspunkt im Modul, um Messen mit Links zu vermeiden (https: // ... Links sind nicht klar, besser sind inklusive und Methodenaufrufe).
<?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 (Tabellenseite) ..... erstellen ..... lesen (Benutzerprofil - Formular) ..... Aktualisieren Sie .... 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
<!-- 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 (Tabellenseite) ..... erstellen ..... lesen (Benutzerprofil - Formular) ..... Aktualisieren Sie .... Adapter
<?php
// J:awwwwwwfwphpglomoduladrscre_row_frm.php
. . .index.php ..... index.php ..... HOME_CTR ..... HOME (Tabellenseite) ..... erstellen ..... lesen (Benutzerprofil - Formular ..... Aktualisieren Sie .... Adapter
<?php
//J:awwwwwwfwphpglomoduladrsread_tbl.phpindex.php ..... index.php ..... HOME_CTR ..... HOME (Tabellenseite) ..... erstellen ..... lesen (Benutzerprofil - Formular) ..... Aktualisieren Sie .... Adapter
<?php
// J:awwwwwwfwphpglomoduladrsupd_row_frm.phpSimplestCrud Index.php ..... Index.php ..... HOME_CTR ..... HOME (Tabelle Seite) ..... Erstellen Sie ..... Read (Benutzerprofil - Formular) ..... Update .... [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
Es ist nicht leicht zu erkennen, dass der Code für Benutzermodul von prozeduralem MVC zu OOP MVC mit Namespaces und Autoloading für Navigationscode (URL -S, Links) ist, ist nicht einfach. OOP hilft nicht. Procedural MVC EG -Benutzermodulcode kann klarer und lesbar sein. Warum ist OOP besser?
Einige sagen: "Ist OOP -Fehler?" - z. B. mangelnde Wiederverwendbarkeit in OOP - Banane (eine Methode oder Attribut), die Sie auch Gorilla Banane und Gorilla's Dschungel erhalten (alle höheren Klassen mit komplizierten Abhängigkeiten ).
ZB-Schnittstellen tragen dazu bei, nur Bananen zu erhalten, aber die Codierung ist kompliziert-ich könnte nur starke Beispiele für das Gespräch mit dem Weak-Arbeit zu diesem Thema finden.
J: awww www Vendor B12Phpfw db_allsitsits_intf.php (17 Treffer) Zeile 15: statische öffentliche Funktion get_or_new_dball (String $ namens_from = ' Unbekannter Anrufer '); Zeile 16: statische öffentliche Funktion ClosedbConn (); Zeile 17: statische öffentliche Funktion getdbi (); Zeile 18: statische öffentliche Funktion setdo_pgnion ($ new_val); Zeile 22 : // 11111 ******************** statische öffentliche Funktion rr_last_id (String $ TBL, Array $ Other = []): int ; Objekt; // TBL -Reihe erstellen
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;
Z. B. Rechnungsmodul funktioniert mit zwei Tabellen: Rechnungs- und Rechnungen (oder drei Tabellen: Bill, Rechnung, Rechnungen_items). Simmilar "Simplest Lösung" Drei Drei Dirs M, V, C ist schlecht - :) - 3Dirs -Liebhaber setzen Codierungstechnik (M, V, C -Code -Trennung) in den Vordergrund statt Seiten (Funktionalität, Geschäftslogik).
RR Banane ist nicht mehr im Dschungel, Gorilla und Dschungel sind nur eine abstrakte Klasse config_allsitessites, die de facto $ pp1 = Eigenschaften ist.
Banana $ pp1 = Eigenschaften Palette kann in aggregierenden (zusammengesetzten, komponierten, Multiplex) -Modulen wie Blog, Rechnungsbetrag zu Schwierigkeiten führen ... aber $ pp1 ist zwangsläufig (Inkut, Notwendigkeit) Gorilla-Jungle und kann nicht weiter vereinfacht werden. Ich habe 20 Jahre in $ PP1 und Global Jungle (Oracle Forms 6i) gearbeitet, die nicht so gut geerdet sind wie hier.
Siehe https://phpthewrongway.com/ oder Joe Armstrong, warum OOP http://harmful.cat-v.org/software/oo_programming/why_oo_scks saugt.
B12PHPFW basiert auf Ideen in vielen Tutorials, z.
Ich habe viel einfacherer B12PHPFW -Code gemacht, basierend auf Ideen im Jazeb Akram CMS -Blog - Seiten Design und Mini3 PHP FW - Code -Skelett , Routing. Bücher über PHP -Code -Beispiele sind nicht so gut.
CMS -Blog -Video (7,7 GB) Jazeb Akram: Udemy - Der vollständige PHP MySQL Professional Course mit 5 Projekten - selten bis nicht einfaches Tutorial . Ähnlich ist Video (12,3 GB) edwin_diaz_php für Anfänger - werden zu einem PHP -Master -CMS -Projekt. Auch einige andere Videos - so scheint es, dass sie am besten/einfachste Seitendesigns (nicht Code -Skelette) für CMS -Blog EE -Beiträge, Nachrichten sind. Videos sind aus kommerziellen Gründen riesig, um höhere num_of_gb ee $/gb zu erreichen, aber es gibt keinen besten Code - es gibt älteren Programmierstil.
Mini3 (Mini3 PHP FW https://github.com/panique/mini3 - Seltener bis einfacher Tischmodul, aber mehr Funktionalität haben.
/glomodul/z_examples/mvc_fw/hcstudio_easy/public/to Simple FW Beispiel, aber guter Code für das Lernen von PHP (nur Lesen von CRUD), erklärte Middleware . Für komplizierte Routing und Middleware ist es nicht einfach!
https://github.com/ngrt/mvc_todo code wird in diesem Artikel Blog 2017.12.17: https://medium.com/@noufel.gouirhate/create-your-own-mow-mvc-framework-in-php-af7bd1f0ca19 erläutert
https://dev.to/jorgcc/a-minimalist-mvc-project-using-php-without-a-framework-4pd8
https://github.com/trpb/immutablemvc
Andere :
Ich habe viele Änderungen vorgenommen (ich hoffe Verbesserungen), die ich gemacht habe, weil ich vorgeschlagene Lösungen in den oben genannten besten PHP -Frameworks und in Lernquellen (insbesondere in Codierung z. B. Tutorial) gefällt. Aktien (Reusables, Globale, einschließlich) werden dort nicht gut erklärt und codiert.
Ich denke, das sollte einfach/schnell/professionell sein: Shares , Routing, Streit, funktionale Namespaces & Klassen Laden, Web -Rich -Textbearbeitung ...
Aus diesem Grund habe ich so viele Stunden damit verbracht (große Zeitverschwendung, die Tools-Software-Autoren ausführen sollten, nicht Tools-Software-Benutzer wie mich).
Dieses Code -Skelett scheint im Vergleich zu https://github.com/panique/*** mini3*** kompliziert zu sein. Dies ist möglicherweise die beste FW -Codevorlage für kleinere Projekte (und LernpHP).
Für große Projektanteile - Global - Reusables, die ich hier verwende, sind ich sehr wichtig, genau wie Module in eigenen Ordnern (nicht alle in nur 3 Dirs M, V, C) .
Über Aktien (Global) siehe Diskussion:
https://medium.com/@Sameernyaupane/Php-Software-architecture-part-1-mvc-1c7bf042a695
https: //medium.co## 3.2m/@sameernyaupane/php-software-architecture-part-the-alternatives-1bd54e7f7b6d
https://blog.ircmaxell.com/2014/11/alternatives-to-mvc.html
Im Winter 2019/2020 Jahr (viel bis zu spät, weil ich Lot getestet habe, was andere getan haben) habe ich Version 6 von Menü und CRUD PHP -Code -Skelett (eigenes Framework mit dem Namen "B12PHPFW") gemacht - Kerncode beträgt ~ 50 kb. Version 7 .: Php 7 und Merkmal DBI ist im Oktober 2020.
Warum ? Ich mag keine vorgeschlagenen Lösungen in den besten PHP -Frameworks (Laravel, Simfony, Yii ...) und Lernquellen (Internet, Bücher). Ich denke, dass der PHP -Code des EG -Moduls in eigenen Ordner wie Oracle Forms Formular Incrice.fmb (nicht alle Formulare/Berichte in 3 Ordnern: M, V, C) sein sollte. Ich denke, das sollte einfach/schnell/professionell sein: Global , Routing, Streit, Klassen Laden, Web -Rich -Textbearbeitung - deshalb habe ich viele Stunden damit verschwendet, meine B12PHPFW zu codieren (riesige Zeitverschwendung, die Softwareautoren machen sollte, nicht SW -Benutzerprogrammer wie mich).
Warum ich vorgeschlagene Lösungen nicht mag und was ich getan habe, um sie zu verbessern. Rotfarbene Merkmale sind Hauptgründe für B12PHPFW, aber ich habe auch andere Funktionen verbessert. :
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).
| Besonderheit | 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) | hat | 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 | 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) | Gut | could be better |
| 6. Global classes, methods etc (my opinion) | good see below CRUD test output | schlecht |
| 7. (Posts edited with any) WYSIWYG editor | hat | 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 | hat | 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) | hat | Mini3 has, B12phpfw took it from Mini3, TraversyMVC blog has not |
| 12. jQuery only for Bootstrap 5 | Ja | 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 | hat | hat |
| 15. authentification (log in / out) | hat | has not, TraversyMVC blog has |
| 16. authorization (only logged in users may execute some code ee CRUD code...) | hat | Mini3 has not, TraversyMVC blog has |
| 17. Own debugging very simple and useful : msg in pre tag or popup JS msg). xdebug also helps. | hat | has not |
| 18. PHP code here is good for (more) large sites | Ja | NEIN |
| 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.
Erledigt :
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.