상단 ..... 1.4 Dirs ..... 1.3 UML ..... 1.5 DM ..... IDE ..... 3. CRUD ..... SW FW
CRUD 모듈 예제 코드 7 스크립트 :
가장 간단한 crud ..... Index.php ..... Home_ctr ..... Home (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... 어댑터
B12PHPFW : XAMPP (Apache Web Server, Mariadb)를 사용하여 (최신) Windows 10 64 비트에서 홈 PC에서 개발되었습니다 . Windows Oracle Virtual Box Oracle Linux Virtual Machine (Apache Web Server) 및 Linux 데모 사이트에서도 테스트되었습니다 . B12PHPFW는 PHP를 취미로 배우는 20 년의 결과 입니다 (그러나 생산 설치가 없습니다).
코드 (신호) 흐름 및 데이터 흐름을 참조하십시오. 여기 또는 시간 제한이므로 작동하지 않습니다.
fwphp-master.zip에서만 ~ 300kb (b12phpfw 코어는 100kb 미만이며 많은 학습 예와 이미지 ~ 3MB) :
(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/"= olodwebserver_or_hosting_docroot_path, eg first "/"in "/vendor/b12phpfw" 입니다.
폴더 : 공급 업체 (아연, 이제 아연이 없음, 더 이상 존재하지 않으며, 주식은 /벤더 /B12PHPFW )
phpmyadmin 페이지에서 :
내 sql j : awww www fwphp glomodul blog_akram 01_phpcms.sql : 메인 메뉴 페이지의 첫 번째 학습 단계 "1a. mysql" - 오래된 절차 모듈만을 원한다면 충분히 원할 경우 -Auttons -Boloaders - Despatching,, despatching,, despatching, autoloader -rounting -blogpf weant -blog -flph -wont -dispatching, autoloader -blog -flph- 큰 사이트에 유용한 네임 스페이스, 글로벌 - 수백 개의 모듈).
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 모듈이 충분하지 않습니다! 복잡해 보이지만 그렇지 않습니다.
인터넷 및 서적 (Nixon, Powers, Yank, Ullman ...)의 대부분의 (모두?) PHP 학습 소스는 간단 해 보이지만 기본 Sintax에만 적합하며 Menu & Crud 코드 골격의 잘못된 코딩으로 이어지므로 B12PHPFW보다 더 복잡합니다! Book CMS Duckett 2022 년은 PHP를 배우는 데 좋지만 CMS 예제는 그리 좋지 않습니다. 그것은 삶의 역설 중 하나입니다 : "환상, 외모의 유사성".
MNU- /fwphp /www 폴더의 메뉴 모듈
MKD- /fwphp/glomodul/mkd 폴더의 Markdown 컨텐츠 관리 모듈
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 웹 사이트를위한 도구를 만드는 것입니다.
MNU, addrs ... 폴더 (모듈)는 Oracle Forms 6i *.fmb 및 .php는 일부 .fmb 내부의 프로그램과 같습니다. 나는이 접근법이 모든 페이지 (.fmb)에 대해 3 폴더 m, v, c보다 훨씬 낫다고 확신합니다 . 이러한 저자들은 우리 시대에 많은 피해를 입었습니다 (Microsoft, Oracle, 모든 Linux 멍청한 버전 및 창).
http : // dev1 : 8083/fwphp/glomodul/adrs/
http : // dev1 : 8083을 웹 address로 바꾸십시오 http : // localhost b12- adrs module의 홈페이지를 엽니 다.
홈 ....... example1 ....... example2 ....... 주소 - 모듈 (또는 사이트)의 메인 메뉴 HDR
홈페이지 -페이지 제목
-페이지 컨텐츠 :
당신은 다음과 같습니다 : J : awww www fwphp glomodul adrs home.php
$ pp1-> module_relpath 아래 사이트 root = fwphp/glomodul/adrs
$ pp1-> module_url = http : // dev1 : 8083/fwphp/glomodul/adrs/
B12PHPFW는 다른 (PHP) 프레임 워크 (메뉴 및 CRUD 코드 골격)과 다릅니다. 주요 (큰) 차이점 :
각 모듈 (Oracle Forms6i .fmb와 같습니다)은 자체 폴더에 있으며 3 Dirs : M, V, C의 모든 모듈은 아닙니다.
그래서 J : awww www fwphp glomodul adrs ... mini3 adrs ... nppses
하나의 ADRS 모듈 폴더 인 ADRS에 스크립트가 포함되어 있습니다.
글로벌 스크립트는 다음과 같습니다.
네임 스페이스는 위치가 아니라 기능적입니다 (불필요하지만 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 Name)은 다음과 같습니다. http : // dev1 : 8083/fwphp/glomodul/adrs/? i/ex1/ex1은 홈 CLS의 메소드입니다.
Ex1 메소드에는이 페이지가 포함되어 있습니다.
이 페이지 예제 2는 두 매개 변수 p1 = 'param1'및 p2 = 'param2'를 암송합니다. 이 페이지는 HOME CLS EX2 메소드에 포함되어 있습니다. 이 페이지는 http : // dev1 : 8083/fwphp/glomodul/adrs/? i/ex2/p1/param1/p2/param2/입니다.
속성 팔레트 $ pp1의 중요한 부분은 uriq = url (uri) 쿼리 파트입니다. [i] => ex2 여기서 ex2는 호출되는 홈 CLS에서 일부 스크립트를 호출하거나 일부 스크립트를 포함하는 메소드 [p1] => paramet is method (script) 매개 변수 1 [p2] => param2 this method (script) 매개 변수 2입니다.
URL get get get parameter p1 = param1 url get parameter p2 = param2
당신은 다음과 같습니다
특성 db_allsites 정적 공개 함수 rrcnt "class tbl_crud"에서 호출 된 문제가 있습니다.
더 이상 사용되지 않는다 : 정적 특성을 호출 b12phpfw core b12phpfw db_allsites :: rrcount는 더 이상 사용되지 않았으며, 특성을 사용하여 클래스에서만 호출되어야한다. PHP 저자는이 문제를 설명하지 않았습니까? 그래서 지금은 클래스입니다 (2022-07-03). (오래된 좋은 규칙 : 언어 저자가 변경 사항을 충분히 세부적으로 테스트하지 않기 때문에 고급 언어 기능을 사용하지 마십시오!)
ADRS 모듈에 대해 배울 것이 많습니다. 어려워 보인다면 먼저 미니 3을 시도하십시오. MSG 모듈은 실제 프로그래밍 인 "더 많은 모듈"기능을 추가합니다.
if ( '') {... to if ( '1') {... "주소"버튼 또는 기타 링크를 클릭 한 후 코드 흐름을 표시 한 후 AutoRoad 클래스에서 출력.
clean_architection.md 참조 https://github.com/nazonohito51/clean-architecture-sample에서 코드 레벨 이미지는 어디에 있는지 참조하십시오.
MD 파일 편집 : http : // dev1 : 8083/fwphp/glomodul/mkd/? i/showhtml/path/j : awww www clean_architecture.md
상단 ...... Dirs ..... 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 symenusuite 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 Extensions (git update-git-for-windows)
J : awww www (마스터 -> 원산지)
또는 git add add fwphp (또는 git이 요구하는 모든 것) 또는 git add -A 또는 git add index.html
시스템 하드 드라이브 내에 프로젝트 파일을 저장했습니다.
CMDER가 "치명적 : 전자 메일 주소를 자동화 할 수 없음"오류가 표시되는 경우 : 위의 GIT 구성을 참조하십시오 ...
git config -global user.email "[email protected]"및 git config -global user.name "당신의 이름"
계정의 기본 신원을 설정합니다. 생략 -글로벌 로이 저장소에서만 신분을 설정하십시오.
Github 사이트 내에 프로젝트 파일을 저장했습니다.
파일의 이전 개정판을 복원하려고합니다. GIT 체크 아웃 8A7B201 index.html "헤드"를 개정으로 지정하면 파일의 마지막 커밋 된 버전을 복원하여 해당 파일의 현재 로컬 변경 사항을 효과적으로 실행 취소합니다.
git 체크 아웃 헤드 index.html
명령을 사용하여 삭제 된 파일을 작업 디렉토리에서 롤백 할 수 있습니다.
git 체크 아웃 -.
또는 git 결제 -Filemame ...
git is program이고 github는 사이트입니다 - 배포 (Book) 자습서
우리는 예를 들어 스크립트를 동시화하기 위해 사용합니다.
2021 년 8 월 13 일부터 Github는 github.com에서 GIT 작업을 인증 할 때 더 이상 계정 암호를 수락하지 않으며, ** PAT, HTTPS에 대한 개인 액세스 토큰 = PSW 40 문자 길이 (개발자) 또는 GitHub 설치 토크를 위해 https에 대한 개인 액세스 토큰과 같은 토큰 기반 인증을 사용해야합니다. 선호하는 SSH 키를 계속 사용할 수도 있습니다.
https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-apersonal-access-token
λ git 원격 -V 출력 :
Origin https : // [token]@github.com/slavkoss/fwphp.git (fetch)
Origin https :/[token]@github.com/slavkoss/fwphp.git (푸시)
따라서 마지막 커밋 만 남아 있고 첫 번째 커밋입니다.
전에 .git/config를 저장하고 후에 복원하십시오. (Recycle Bin에서 삭제합니다).
내 PHP IDE는 아래 나열된 모든 SW에 대한 런처로 Symenu Zip 패키지 입니다 (가능한 경우 휴대용) :
메모장 ++ Markdown 플러그인
메모장 ++ 설치 디렉토리의 플러그인 하위 폴더에 tmarkdownviewerplusplus.dll을 복사하십시오.
플러그인은 도구 모음에 작은 마크 다운 아이콘을 추가하여 뷰어를 도킹 가능한 패널로 전환합니다.
그런 다음 NPP 설정 -> 가져 오기 -> 플러그인 가져 오기.
J : awww www globals nppsess 파일 및 기타 nppsess 파일을 참조하십시오.
INET에서 MD에서 HTML 변환기 :
또한 Symenu의 모든 휴대용 : Notepad2-MoD (2MB), Atom (524 MB),
Visual Studio Code (247MB), Cudatext (28MB), PSPAD (23MB), RJ Texted (416 MB),
HTML Wysiwyg 편집기 : Microsoft Expression Web (포기되었지만 여전히 좋습니다).
나는 DreamVeawer, Komposer (버려진, 너무 오래된)를 피합니다.
사령관 :
오래되었지만 최고 (Janne Huttunen) 또는 Simmilar Everything , Symenu를 참조하십시오.
Meinplatz (x64) (Symenu 휴대용 프로그램의 일부) Treesize 와 같은
또는 다중 사령관, Q-Dir, Totalcommander ...
브라우저 :
Chrome, Cyberfox, Pale Moon
(Symenu에서)는 CMD 라인을 WIN입니다.
Composer는 PHP 프로젝트의 종속성을 선언, 관리 및 설치하는 데 도움이됩니다.
FTP 클라이언트 WinSCP . 무시하십시오 : | *.지퍼; J : awww www.git; J : awww www vendor/b12phpfw/dbconn_allsites.php;
FTP 서버 Symenu의 서바 커뮤니티
PHP 매뉴얼
PHP 스타일 가이드
W3Schools의 PHP 튜토리얼
Guzzle은 PHP HTTP 클라이언트로서 HTTP 요청을 쉽게 보내고 웹 서비스와 통합 할 수있는 사소한 것을 쉽게 보낼 수 있습니다.
DesignPatternsphp는 알려진 설계 패턴과 일부 샘플 코드 모음으로 PHP 7.4에서이를 구현하는 방법입니다. 모든 패턴에는 작은 예제 목록이 있습니다.
플러그인 및 테마 자체의 강력한 패키지 관리 시스템을 갖춘 Grav 휴대용 플랫 파일 CM.
PHP 가이드
_.-'''''-._
.' _ _ '.
/ (o) (o)
| |
| / |
'. .' /
'. ''---'' .'
'-._____.-'
클래스 구조 - 속성 및 방법을 보여줍니다
상단 ...... 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 핵심 코드.
레벨 : 모든 사이트 (모든 사이트의 동일한 코드 EE 공유, 글로벌, 공통)
( 모델 , 추상적)
클래스 dbconn_allsites. 특성은 수업과는 간단합니다 . 특성의 이유는 순 코드 구조입니다.
일부 수업은 더 많은 특성 ( 순 - 더 많은 부모)을 사용할 수 있지만 한 학급 만 확장 할 수 있습니다.
나는 특성을 사용하지 않습니다 - 고급 코드가 자주 보유한 버그가있었습니다.
// see class script // see class script
기본적으로 db_allsites.php read (rr, report)는 코드처럼 작동합니다.
/awww/www/clean_architecture.md. 나는 2023 년 1 월 10 일 버전에서 그것을했다.
B12PHPFW 핵심 코드.
레벨 : 모든 사이트 (모든 사이트의 동일한 코드 EE 공유, 글로벌)
// see class script // see class script 많은 스크립트에서 inc. 명령을 피하기 위해
B12PHPFW 핵심 코드.
레벨 : 모든 사이트 (모든 사이트의 동일한 코드 EE 공유, 글로벌, 공통)
// see class script // see script B12PHPFW 모듈 코드.
레벨 : 모듈 (모듈 EE 폴더, 예 : MNU 또는 MKD 또는 MSG = 블로그의 동일한 코드)
프로그램 실행의 경우 클래스 계층 구조는 다음과 같습니다. home_ctr 위의 클래스의 모든 속성과 메소드가 Home_ctr 클래스에있는 것처럼. 즉, Home_ctr에서 (메모리에서 생성) 인스턴스화 된 이 개체 (모든 클래스 - 위의 속성 및 메소드에 대한 설명)에 인스턴스화 된이 개체에 있습니다.
Home_ctr이 아닌 Home_ctr 위의 계층 구조에서 공유 (공통) 속성과 방법이 왜 있습니까?
우리는 모든 home_ctr 스크립트에 home_ctr 위의 전체 공유 (공통) 코드를 쓰고 싶지 않습니다 .
상단 ..... dirs ..... Uml ..... dm ..... ide ..... crud ..... sw fw
정보 코드 참조 :
http://phporacle.eu5.net/fwphp/glomodul/z_examples/03_info_php_apiche_config_scripts.php
https://github.com/slavkoss/fwphp/blob/mas
B12PHPFW는 다른 PHP 프레임 워크 ( "메뉴 및 크루드 코드 골격")보다 매우 다릅니다.
Dirs는 Oracle Forms Form 모듈과 같습니다 .fmb https://github.com/ngrt/mvc_todo- 매우 우수한 코딩 (간단한 예제, 글로벌, 네임 스페이스 없음 ...), 일반적인 PHP 프레임 워크 DIRS 및 라우팅 아이디어를 표시합니다. MVC_FW DIR 또는 검색 Google : GitHub PHP 프레임 워크
아래에 언급 된 다른 이유
간단한 MVC 예제 (많은 좋은 코딩)에 대해서는 거의 드물지 않은 Mini3 PHP 프레임 워크 https://github.com/panique/mini3을 참조하십시오. 키 값을 사용한 라우팅은 다르지만 홈 클래스 방법을 사용한 파견은 MINI3을 기반으로합니다 .
B12PHPFW에는 3 개의 모듈과 일부 유틸리티가 있습니다.
상단 ...... Dirs ..... Uml ..... dm ..... ide ..... crud ..... sw fw
mkd fwphp/glomodul/mkd/02/01_fwphp/php_dip_di.txt 사용을 참조하십시오
상단 ...... Dirs ..... Uml ..... dm ..... ide ..... crud ..... sw fw
jQuery, PHP, Bootstrap Ajax DB 테이블 행 CRUD는 가장 간단하고 가장 빠른 최고의 크루드 일 수 있지만 jQuery가없고 Ajax가 없습니다. 내가 필요한 JavaScript 만 대화 상자 예 또는 아니오입니다.
테이블 노래의 Crud 행 (#ID, 아티스트, 트랙, 링크) . Mini3 프레임 워크 https://github.com/panique/mini3는 PHP 및 프레임 워크 코드 골격을 배우는 것이 가장 좋습니다 . Glomodul Modules-Group의 ADRS 모듈은 B12PHPFW의 MINI3입니다. 왜 ? 큰 사이트의 경우 Mini3은 단순하다고 생각합니다. 주식은 없습니다 ...
스크립트를 참조하십시오.
가장 간단한 Crud ..... Index.php ..... Home_ctr ..... Home (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... 어댑터
링크가 혼란을 피하기 위해 모듈의 단일 진입 점이 필요합니다 (https : // ... 링크는 명확하지 않으며 더 나은 포함 및 메소드 호출).
<?php
/**
* J:awwwwwwfwphpglomoduladrsindex.php
*/
. . .
/**
* J:awwwwwwfwphpglomoduladrsindex.php
* DISPATCHING is calling method according URL parts (extracted with ROUTING code).
* Because MODULE METHODS PARAMS ARE MOSTLY GLOBAL (same for all modules), eg paths,
* to avoid lot of same code in modules (code redundancy) :
* 1. WE ASSIGN GLOBALS IN PARENT CONF&UTL CLS METHOD
* (not knowing which module is going to use them)
* 2. THEN, FROM PARENT CLS WE CALL METHOD IN CHILD MODULE CLS.
* Module method knows how to use globals
* and what module needs for parameters beside globals.
*/
/**
* ns (NAMESPACES) we use in clses script autoloading.
* vendor_namesp_prefix processing (behavior) clsdir [ cls] [as clsalias]
* eg B12phpfw is vendor_namesp_prefix ; //FUNCTIONAL, NOT POSITIONAL
* FUNCTIONAL parts are not requirad, we use them to better understand script purpose.
*eg clsdir - only this part of namespace is POSITIONAL, CAREFULLY !
*/
/**
* **HELPNS
* first namespace part B12phpfw is NOT REQUIRED : vendor's name NS's prefix (FUNCTIONAL NSPART)
* 2nd ns part m o d u l e is NOT REQUIRED : FUNCTIONAL NSPART = processing (behavior)
*
* FNSPs (FUNCTIONAL NS PARTS) are ignored by fw, ee we name them as we wish.
* We use FNSPs as description to depict WHAT CODE DOES (processing, behavior).
* May be more functional ns parts as we wish - all are ignored !
*
* PNSP (POSITIONAL NS Part) CAREFULLY! : LAST NS part (BEFORE CLSNAME IF ANY) eg "blog" is DIRNAME.
* PNSP is actually (de facto, in fact, indeedded) DIRNAME and module name.
* Path OF DIRNAME (of PNSP) is in $pp1 array,
* used for Autoload class to include classes from dir DIRNAME.
* Autoload class is include, global, common, reusable.
*/ index.php ..... index.php ..... Home_ctr ..... home (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... 어댑터
. . .
* ------------------------------------------------------------------------------
* ROUTING TBL - module links, ( IS OK FOR MODULES IN OWN DIR ) key-keyvalue pairs :
* LINK ALIAS IN VIEW SCRIPT (eg l d d) => HOME METHOD TO CALL (eg del_ row_do)
* ------------------------------------------------------------------------------
* 1. ALL MODULE VIEWS LINKS SHOULD BE IN $ pp1_ module, SHAPED SO :
* 2. $ pp1 -> urlqrystringpart1_name => i/M E T H O D NAME /param1name/ param1value. . . 2 , 3. . .
* (urlqrystring LAST PART IS IN VIEW SCRIPT WHICH KNOWS IT , eg idvalue !)
* 3. IF LINK key-keyvalue pair IS NOT HERE THEN EG :
* in URLurlqrystring : QS . ' i/home/ ' home must be M E T H O D NAME in this script.
* Eg http: //dev1:8083/fwphp/glomodul/adrs/?i/ex1/ or
* http: //dev1:8083/fwphp/glomodul/adrs/?i/home/ or
* http: //dev1:8083/fwphp/glomodul/adrs/
*/
/** *****************************************
* CALL DISPATCH M E T H O D S
* they 1.call other fns or 2.include script or 3.URL call script
* CALLED FROM abstract class Config_ allsites, m ethod __c onstruct
* so: $pp1->call_module_m ethod($akc, $pp1) ;
* $ a k c is m o d u l e m ethod (in MM Home_ ctr, not global fn !!
* because MM Home_ ctr knows akc parameters)
* ******************************************
*/index.php ..... Index.php ..... Home_ctr ..... ** home (테이블 페이지 ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... 어댑터
<!-- 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 (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... 어댑터
<?php
// J:awwwwwwfwphpglomoduladrscre_row_frm.php
. . .index.php ..... Index.php ..... Home_ctr ..... Home (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 ..... 업데이트 .... 어댑터
<?php
//J:awwwwwwfwphpglomoduladrsread_tbl.phpindex.php ..... index.php ..... Home_ctr ..... home (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... 어댑터
<?php
// J:awwwwwwfwphpglomoduladrsupd_row_frm.phpsimplestcrud index.php ..... Index.php ..... Home_ctr ..... home (테이블 페이지) ..... 작성 ..... 읽기 (사용자 프로필 - 양식) ..... 업데이트 .... [어댑터]
<?php
/**
* J:awwwwwwfwphpglomoduladrsTbl_crud.php
* DB (PERSISTENT STORAGE) ADAPTER C L A S S - PDO DBI
* (PRE) CRUD class - DAO (Data Access Object) or data mapper
* This c l a s s is for one module - does know module's CRUD
* Other such scripts should be (may be not ?) for csv persistent storage, web services...
*
* DM=domain model aproach not M,V,C classes but functional classes (domains,pages,dirs)
* MVC is code separation not functionality !
*/
/**
* (PRE) CRUD class - DAO (Data Access Object) or data mapper
*/
} // e n d c l s T b l_ c r u d
사용자 모듈에 대한 예를 들어 절차 MVC에서 OOP MVC로 코드를 변환하고 네임 스페이스를 사용하여 코드를 변환하고 탐색을위한 자동로드 (URL -S) 코드가 동일합니다. OOP가 도움이되지 않습니다. 절차 MVC 예를 들어 사용자 모듈 코드가 더 명확하고 읽을 수 있습니다. 그렇다면 왜 OOP가 더 나은가?
어떤 사람들은 "OOP 실수인가요?" - 예를 들어 OOP의 재사용 부족 - 바나나 (일부 방법 또는 속성)를 얻으려면 바나나와 전체 고릴라의 정글 ( 복잡한 종속성을 가진 고등 등급 )을 잡는 고릴라도 얻습니다.
예를 들어 인터페이스는 바나나 만 얻는 데 도움이되지만 코딩은 복잡합니다.이 주제에 대한 강력한 대화량 작업 코드 예제 만 찾을 수 있습니다.
j : awww www vendor b12phpfw db_allsites_intf.php (17 적중) 줄 15 : 정적 공개 함수 get_or_new_dball (String $ call_from = ' 알 수없는 발신자 '); 16 행 : 정적 공개 함수 CloseBConn (); 17 행 : 정적 공개 기능 getDBi (); 18 행 : 정적 공개 기능 SetDO_PGNITION ($ new_val); 22 행 : // 11111 ********************* r 함수 : 라인 24 : 정적 공개 함수 get_cursor (// object $ pp1 // on oracle cursor // rr line 27 : 객체 $ cursor, array $ 다른 = []) : object; static public function rrcount (string $ tbl, array $ 31) : 정적 공개 기능 RR_LAST_ID (String $ TBL, Array $ 기타 = []) : int 32 : // String $ tbl , array $ elopher = []); 객체; // tble 행 생성
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) : 문자열;
예를 들어 송장 모듈은 송장 및 invoice_items (또는 3 개의 테이블 : Bill, invoice, invoice_items)의 두 테이블과 함께 작동합니다. Simmilar "Simple Solution"Three Dirs M, V, C는 나쁘다 - :) - 3dirs 애호가는 코그라운드에 코딩 테크니크 (M, V, C 코드 분리)를 넣습니다.
RR 바나나는 더 이상 정글에 있지 않으며 Gorilla와 Jungle은 De Facto $ pp1 = 속성 인 하나의 추상 클래스 config_allsites 일뿐입니다.
바나나 $ pp1 = 속성 팔레트는 블로그, 송장과 같은 집계 (복합, 작곡, 멀티 플렉스) 모듈에 어려움을 유발할 수 있지만 $ pp1은 필연적으로 (임박, 필요) gorilla-jungle이며 더 단순화 할 수 없습니다. 나는 $ pp1에서 20 년 동안 일했고 Globals Jungle (Oracle Forms 6i)은 여기처럼 잘 접지되지 않았습니다.
https://phpthewrongway.com/ 또는 Joe Armstrong을 참조하십시오. OOP가 http://harmful.cat-v.org/software/oo_programming/why_oo_sucks를 짜증나는 이유를 참조하십시오.
B12PHPFW는 많은 튜토리얼의 아이디어를 기반으로합니다. 예를 들어 다음 몇몇은 최고 중 하나입니다 (그러나 최고의 PHP 프레임 워크 Laravel, Simfony, Yii, Phalcon ...)의 일부 아이디어도 있습니다.
Jazeb Akram CMS 블로그의 아이디어를 기반으로 훨씬 간단한 B12PHPFW 코드를 사용했습니다. 페이지 디자인 및 MINI3 PHP FW- 코드 골격 , 라우팅. PHP 코드 예제에 관한 책은 그리 좋지 않습니다.
CMS 블로그 비디오 (7.7 GB) Jazeb Akram : Udemy- 5 개의 프로젝트가있는 완전한 PHP MySQL 전문 과정 - 간단한 튜토리얼에는 드물다 . 초보자를위한 비디오 (12.3GB) EDWIN_DIAZ_PHP와 비슷합니다. PHP 마스터 -CMS 프로젝트가 되십시오. 또한 다른 비디오 - CMS 블로그 EE 게시물, 메시지에 가장 적합/가장 간단한 페이지 디자인 (코드 골격이 아님) 인 것 같습니다. 더 높은 NUM_OF_GB EE $/GB에 도달하려는 상업적 이유로 비디오는 큰 코드가 없습니다. 오래된 프로그래밍 스타일이 있습니다.
Mini3 (Mini3 PHP FW https://github.com/panique/mini3- 단순한 하나의 테이블 모듈은 드물지만 더 많은 기능을 가질 수 있습니다.
/glomodul/z_examples/mvc_fw/hcstudio_easy/public/간단한 FW 예제이지만 학습을위한 좋은 코드 (CRUD에 대한 읽기)는 미들웨어를 설명했습니다. 복잡한 라우팅 및 미들웨어에있어서 쉽지 않습니다!
https://github.com/ngrt/mvc_todo 코드는이 기사 블로그 2017.12.17에 설명되어 있습니다.
https://dev.to/jorgecc/a-minimalist-mvc-project-using-php-bl--a-framework-4pd8
https://github.com/trpb/immutablemvc
다른 :
나는 최고의 PHP 프레임 워크와 위에서 언급 한 학습 소스 (예 : 트래버스 튜토리얼)에서 제안 된 솔루션을 좋아하지 않기 때문에 많은 변화 (개선)를 만들었습니다. 주식 (재사용품, 글로벌, 포함)은 잘 설명되고 코딩되지 않습니다.
나는 단순/빠른/전문가 여야한다고 생각합니다 : 공유 , 라우팅, 분쟁, 기능 네임 스페이스 및 클래스로드, 웹 리치 텍스트 편집 ...
이것이 제가이 일에 너무 많은 시간을 보냈습니다 (나와 같은 도구-소프트웨어 사용자가 아닌 도구-소프트웨어 저자를 수행 해야하는 엄청난 시간 낭비).
이 코드 골격은 https://github.com/panique/***mini3***와 비교하여 복잡해 보입니다. 이는 소규모 프로젝트 (및 학습 PHP)에 가장 적합한 FW 코드 템플릿 일 수 있습니다.
대규모 프로젝트 공유의 경우, 여기서 사용하는 전 세계 - 재사용품은 자체 폴더의 모듈과 동일한 매우 중요합니다 (모두 3 Dirs M, V, C에서만) .
주식 정보 (글로벌) 토론을 참조하십시오.
https://medium.com/@sameernyaupane/php-software-architecture-part-1-mvc-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 년 겨울 동안 (다른 사람들이 한 일을 테스트했기 때문에 늦게까지) 메뉴 6 개 버전과 CRUD PHP 코드 골격 ( "b12phpfw"라는 자체 프레임 워크) - 핵심 코드는 ~ 50 KB입니다. 버전 7. : PHP 7과 특성 DBI는 2020 년 10 월입니다.
왜 ? 나는 최고의 PHP 프레임 워크 (Laravel, Simfony, Yii ...) 및 학습 소스 (인터넷, 서적)에서 제안 된 솔루션을 좋아하지 않습니다. 예를 들어 모듈 송장 PHP 코드는 Oracle Forms Form invoice.fmb와 같은 자체 폴더에 있어야한다고 생각합니다 (3 폴더의 모든 양식/보고서 : M, V, C). 글로벌 , 라우팅, 분쟁, 클래스로드, 웹 리치 텍스트 편집 - B12PHPFW (나와 같은 SW 사용자 프로그램이 아닌 소프트웨어 저자를 수행 해야하는 거대한 시간 낭비)를 코딩하는 데 많은 시간을 낭비하는 이유입니다.
내가 제안 된 솔루션을 좋아하지 않는 이유와 내가 한 일이 그들을 개선하기 위해 한 일을 개선합니다. 붉은 색의 기능은 B12PHPFW의 주요 이유이지만 다른 기능도 향상되었습니다. :
Traversymvc (비디오가 있음)와 Mini3은 단순화되며 Laravel, Simfony, Yii, Falcon과 비교하여 일부 (많은?) 차이점이 있습니다. 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 | to many |
| 4. Minimal PHP code to learn (medium) PHP (my opinion) | optimal (but we could add additional code) | good but not enough eg see WYSIWYG, globals... |
| 5. Functional methods, attr. etc naming (my opinion) | 좋은 | could be better |
| 6. Global classes, methods etc (my opinion) | good see below CRUD test output | 나쁜 |
| 7. (Posts edited with any) WYSIWYG editor | 가지다 | has not |
| 8. Home_ctr or Home_mdl CRUD layer methods do not know for underlaying Db_allsites layer PDO methods, MySql, Oracle... | has much improved | has not |
| 9. OOP | 가지다 | has like Mini3 |
| 10. namespaces (own PSR-4 (or Composer's) autoloading classes scripts) | 개선 | 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.