أعلى ..... 1.4 dirs ..... 1.3 UML ..... 1.5 DM ..... IDE ..... 3. crud ..... sw fw
CRUD MODULE مثال رمز 7 البرامج النصية:
أبسط crud ..... index.php ..... home_ctr ..... home (صفحة الجدول) ..... إنشاء ..... قراءة (ملف تعريف المستخدم - نموذج) ..... تحديث .... محول
B12PhPFW: تم تطويره على جهاز كمبيوتر منزلي على (أحدث) Windows 10 64 بت مع XAMPP (Apache Web Server ، MariaDB). تم اختباره أيضًا على جهاز Windows Oracle Virtual Box Oracle Linux Virtual Machine (Apache Web Server) وعلى مواقع Linux التجريبية. B12PhPFW ناتج عن 20 عامًا من تعلم PHP كهواية (لكن ليس لدي منشآت إنتاج).
انظر الكود (الإشارات) التدفق وتدفق البيانات أو هنا - لا يعمل لأن المهلة الزمنية.
استخراج من fwphp-master.zip فقط ~ 300 كيلو بايت (B12PhPFW Core أقل من 100 كيلو بايت ، مع العديد من أمثلة التعلم الإضافية والصور ~ 3 ميجابايت):
(Apache or nginx...) WEB SERVER DOCROOT J:\xampp\htdocs\, my is virtual host J:\awww\www\
│
│
│─I.fwphp (app or SITE1 or APLications1) = Main site dir. fwphp is optional name.
│ └── Contains MODULE GROUPS eg APLication1 or glomodul (under which is www =main menu) :
│ glomodul, finance, material, salary
│ └── They contain MODULES eg www or post under glomodul dir
│
│
│─II.index.php redirects to main menu url : /fwphp/glomodul/www/index.php
│
│
│─III.vendor
│ └── b12phpfw dir = internal resources, external sresources are in other vendor subdirs.
│ Here are class Autoload and other for all sites shared - common - global
│ classes Db_allsites and Config_allsites....
│ └── erusev = external resources
│ └── parsedown = external resources
│ └── simplemde
تنزيل من https://github.com/slavkoss/fwphp
أولاً "/" في المسارات أدناه هو "j: awww www " = "http: // dev1: 8083/" = ownwebserver_or_hosting_docroot_path ، eg first "/" in "/pendor/b12phpfw"
المجلدات: البائع (كان الزنك ، الآن زنك لا يوجد موجود ، الأسهم في /بائع /B12PhPFW )
في صفحة phpmyadmin:
استيراد في بلدي sql j: awww www fwphp glomodul blog_akram 01_phpcms.sql : هل أول خطوة التعلم "1A. مساحات الأسماء ، الكرات التي هي مفيدة للمواقع الكبيرة - مئات الوحدات النمطية).
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 - خطوة التعلم الثانية بجانب وحدة MNU في j: awww www fwphp glomodul www . ADRS ليس مثالًا بسيطًا ولكنه لا يكفي لتعلم قائمة B12PhPFW و Crud Code Severon! بما يكفي لعدم وحدات التعلم البسيطة هي وحدات MNU و MKD و MSG! يبدو معقدا ولكن ليس كذلك.
معظم (الكل؟) مصادر تعلم PHP على الإنترنت والكتب (نيكسون ، القوى ، Yank ، Ullman ...) تبدو بسيطة ، ولكن في رأيي جيدة فقط من أجل sintax الأساسي وتؤدي إلى ترميز خاطئ للهيكل العظمي لقائمة الكود ورمز الكود ، لذلك تكون أكثر تعقيدًا من B12PHPFW! يعد Book CMS Duckett 2022 Year مفيدًا لتعلم PHP ، لكن مثال CMS ليس جيدًا. إنها واحدة من مفارقات الحياة: "الوهم ، مظاهر المظهر".
MNU - وحدة القائمة في /FWPHP /WWW Folder
MKD - وحدة إدارة محتوى Markdown في/FWPHP/GLOMODUL/MKD FORD
MSG - CRUD MSG -BLOG MODULE في/fwphp/glomodul/blog ، ... user ، ... post_category ، ... post ، ... post_comment (all in glomodul dir).
حاليًا 2023.01.15 ، الإصدار B12PhPFW 10.0.0.0 "محول DB نفس الوحدة النمطية لأي محول DB المشترك". 10.0.0.0 يعني:
يناير 2023: تعمل وحدة ADRS فقط على MySQL أو Oracle (11g) DB (وليس جميع الوظائف ، ولكن بما يكفي لرؤية كل شيء مهم). ليس من الصعب تحديث وحدة ADDRS بالكامل ووحدة MSG إلى الإصدار 10 ، ولكن الأمر يستغرق الكثير من الوقت ، لذلك أنا لست في عجلة من أمرنا لأنني أعتقد أنني حققت هدف القائمة ورمز الهيكل العظمي B12PHPFW. تعني الكثير من الوقت في الجملة السابقة أن أدوات SW وتطبيقات المستخدم تتطلب الكثير من الوقت للإنهاء إذا قمنا بتغيير شيء ما. أفضل مثال على كيفية تجنب ذلك هو رمز مشترك (عالمي) على سبيل المثال "محول DB نفس الوحدة النمطية لأي محول DB المشترك".
يستند هدف B12PHPFW PHP SW ، بناءً على أكثر من عشرين عامًا من العمل مع Oracle Forms 6i ، لصنع أداة لـ *.php مع المنطق مثل Oracle Forms 6i.
MNU ، addrs ... المجلدات (الوحدات النمطية) تشبه نماذج Oracle 6i *.fmb و .php مثل البرامج داخل بعض .fmb. أنا مقتنع بأن هذا النهج أفضل بكثير من ثلاثة مجلدات M ، V ، C لجميع الصفحات ( .FMB) التي يبدو لي أنها عمل مؤلفين لأدوات SW الذين ليس لديهم خبرة عملية كافية. لقد تسبب هؤلاء المؤلفون في الكثير من الأضرار في عصرنا (Microsoft ، Oracle ، جميع إصدارات Linux الغبية وحتى Windows).
http: // dev1: 8083/fwphp/glomodul/adrs/
استبدل http: // dev1: 8083 بعنوان الويب الخاص بك على سبيل المثال http: // localhost b12 - تفتح الصفحة الرئيسية لـ ADRS Module`s:
الصفحة الرئيسية ....... example1 ....... example2 ....... العناوين - القائمة الرئيسية في الوحدة النمطية (أو الموقع) HDR
الصفحة الرئيسية -عنوان صفحة
-محتوى الصفحة:
أنت في عرض: j: awww www fwphp glomodul adrs home.php
$ pp1-> module_relpath أدناه جذر الموقع = fwphp/glomodul/adrs
$ pp1-> module_url = http: // dev1: 8083/fwphp/glomodul/adrs/
B12PhPFW مختلف عن أطر أخرى (PHP) (القائمة وكود هياكل العظمية). الاختلافات الرئيسية (الكبيرة):
كل وحدة (مثل Oracle Forms6i .FMB) في المجلد الخاص ، وليس جميع الوحدات النمطية في 3 dirs: M ، V ، C.
So J: awww www fwphp glomodul adrs ... mini3 adrs ... nppses
يحتوي على البرامج النصية في مجلد وحدة ADRS واحدة فقط: ADRS.
البرامج النصية العالمية موجودة في: j: awww www Pendor b12phpfw folder.
مساحات الأسماء وظيفية وليست موضعية (وليس شجرة دير التي لا لزوم لها ، ولكن دير كافية!).
eg namepace b12phpfw site_home www ؛ أو b12phpfw site2_home www (!) أو b12phpfw module adrs
1. B12PHPFW MODULE هو جزء وظيفي من مساحة الاسم - ما يفعله البرنامج النصي - قد نكتب هنا كل ما نتمناه
2. ADRS هو المجلد الذي يكون فيه البرنامج النصي (j: awww www fwphp glomodul adrs home_ctr.php ، http: // dev1: 8083/fwphp/glomodul/adrs/)
شعار الموقع (إذا كنت ترغب في ذلك): في خلفية CSS: URL ('البيانات: Image/png ؛ base64 ، ivborw0kggoaa ... qmcc') ؛
-تذييل (أو موقع):
هذا هو mini3 php fw على b12phpfw استنادا إلى mini3 على github.
هذه الصفحة example1 url (Adress Web - Web) هي: http: // dev1: 8083/fwphp/glomodul/adrs/؟ i/ex1/أين هي طريقة ex1 في cls home.
تتضمن طريقة ex1 هذه الصفحة = عرض أن نظام التشغيل الخاص به هو: j: awww www fwphp glomodul adrs example_one.php.
هذه الصفحة example2 تلاوة معلمتين p1 = 'param1' و p2 = 'param2'. تم تضمين هذه الصفحة مع طريقة CLS EX2 الرئيسية. عنوان URL هذا هو: http: // dev1: 8083/fwphp/glomodul/adrs/؟ i/ex2/p1/p2/parm2/
جزء مهم من Property Pallette $ pp1 هو uriq = url (URI) أجزاء الاستعلام: [i] => ex2 حيث يكون EX2 طريقة في cls home يمكن استدعاؤها والتي تستدعي بعض الطريقة أو تتضمن بعض البرامج النصية [p1] => param1 هذه الطريقة (البرنامج النصي) المعلمة 1 [p2] => param2 هذا هو المعلمة (البرنامج النصي) 2.
عنوان URL الحصول على المعلمة p1 = param1 url احصل على المعلمة p2 = param2
أنت في عرض: j: awww www fwphp glomodul adrs example_two.php
السمة DB_Allsites الدالة العامة الثابتة RRCNT المسمى من "Class TBL_CRUD" لديها مشكلة:
تم إهمالها: استدعاء طريقة السمات الثابتة B12Phpfw Core B12Phpfw db_allsites :: rrcount تم إهمالها ، يجب أن يتم استدعاؤها فقط على فصل باستخدام السمة - لم يشرح مؤلفو PHP هذه المشكلة؟ لذلك فئة الآن (2022-07-03). (القاعدة الجيدة القديمة: لا تستخدم ميزات اللغة المتقدمة لأن مؤلفي اللغة لا يختبرون التغييرات بتفاصيل كافية!)
هناك الكثير للتعرف على وحدة ADRS. إذا بدا من الصعب محاولة mini3. تضيف وحدة MSG وظائف "المزيد من الوحدات النمطية" وهي برمجة الحياة الحقيقية ، ليست سهلة ولكنها ضرورية.
الإخراج من فئة Autoload بعد تغيير إذا ('') {... إلى if ('1') {... يعرض تدفق الرمز بعد النقر على "العناوين" أو أي ارتباط آخر.
راجع Clean_architecture.md حيث تكون مستويات الكود صورة من https://github.com/NazonoHito51/Clean-Architecture-sample.
حاول تحرير ملف md: http: // dev1: 8083/fwphp/glomodul/mkd/؟
أعلى ...... 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 يقول: "Fatal: ليس مستودع GIT (أو أي من الدلائل الأم): .git").
git config -global user.name 'yourname'
Git Config-global-replace-all user.email 'youremail'
GIT config-Local -L install GIT Creditive Manager لنظام التشغيل Windows لتجنب تسجيل الدخول على كل دفعة-في امتدادات GIT CMDER (GIT Update-git-for-windows)
J: awww www (Master -> Origin)
أو git إضافة fwphp (أو أي شيء يسأل) أو git add -a أو git إضافة index.html
قمنا بتخزين ملفات المشروع لدينا داخل محرك الأقراص الثابتة في نظامنا.
إذا أظهر Cmder خطأ "فادح: غير قادر على اكتشاف عنوان البريد الإلكتروني التلقائي": انظر أعلاه Git Config ...
git config -global user.email "[email protected]" و git config -global user.name "اسمك"
لتعيين الهوية الافتراضية لحسابك. حذف -global لتعيين الهوية فقط في هذا المستودع.
قمنا بتخزين ملفات مشروعنا داخل موقع GitHub الخاص بنا.
تريد استعادة مراجعة قديمة لملف: GIT Checkout 8A7B201 index.html إذا حددت "رأس" كمراجعة ، فستستعيد آخر إصدار ملتزم من الملف ، مما أدى إلى التراجع بشكل فعال عن أي تغييرات محلية لديك في هذا الملف:
Git Checkout Head Index.html
يمكننا تراجع ملفاتنا المحذوفة في دليل العمل باستخدام الأمر:
Git Checkout -.
أو git checkout - filemame ...
GIT هو البرنامج و github هو الموقع - نشر (كتاب) البرنامج التعليمي
git نستخدمه على سبيل المثال لتوليف البرامج النصية لدينا:
ابتداءً من 13 أغسطس ، 2021 ، لم يعد Github يقبل كلمات مرور الحساب عند مصادقة عمليات GIT على github.com ، ويتطلب استخدام المصادقة المستندة إلى الرمز المميز ، مثل ** PAT ، رمز الوصول الشخصي عبر HTTPS = PSW 40 حرفًا (الموصى به) ** (للمطورين) أو تركيب تطبيق OAUTH أو Github. يمكنك أيضًا الاستمرار في استخدام مفاتيح SSH حيث تفضل.
https://docs.github.com/en/github/authenticating-to-github/keeping-your-ascount-and-data-secure/creating-a-personal-access-token
λ GIT REMOTE -V مخرجات:
Origin https: // [token]@github.com/slavkoss/fwphp.git (Fetch)
Origin https:/[token]@github.com/slavkoss/fwphp.git (push)
لذلك لا يزال الالتزام الأخير هو المماثل وهو الالتزام أولاً:
احفظ .git/config من قبل ، واستعادته بعد. (أنا حذفه في صندوق إعادة التدوير).
PHP IDE هي حزمة Symenu zip كقاذفة لجميع SW المذكورة أدناه (المحمولة إن أمكن):
برنامج Notepad ++ Markdown
نسخ TmarkDownViewerPlusPlus.dll إلى مجلد المكونات الفرعية في دليل تثبيت Notepad ++ الخاص بك.
يضيف المكون الإضافي رمزًا صغيرًا للتخفيض إلى شريط الأدوات لتبديل المشاهد كوحة قابلة للرسو.
ثم في إعدادات NPP -> استيراد -> استيراد المكون الإضافي.
انظر في J: awww www globals nppsess file وملفات nppsess الأخرى.
MD إلى محولات HTML على inet:
جيد أيضًا ، كلها محمولة في Symenu: Notepad2-MOD (2 MB) ، Atom (524 MB) ،
Visual Studio Code (247 MB) ، Cudatext (28 MB) ، PSPAD (23 MB) ، RJ Texted (416 MB) ،
HTML WYSIWYG Editors: Microsoft Expression Web (مهجور ولكن لا يزال جيدًا).
أتجنب Dreamveawer ، Komposer (مهجور ، قديم جدًا).
القائد :
قديم ولكنه الأفضل (جاني هوتونين) أو سيمميرل كل شيء ، انظر Symenu
Meinplatz (x64) (جزء من البرامج المحمولة Symenu) مثل الأشجار
أو multoCommander ، Q-dir ، TotalCommander ...
المتصفح :
Google Chrome ، Cyberfox ، Pale Moon
(في Symenu) هو Win CMD Line ، لديه git.
يساعدك الملحن على إعلان تبعيات مشاريع PHP وإدارتها وتثبيتها.
عميل FTP WINSCP . تجاهل: | *.أَزِيز؛ J: awww www.git ؛ J: awww www Pendor/B12Phpfw/dbconn_allsites.php ؛
FTP Server Symenu Serva Community
دليل PHP
دليل نمط PHP
البرنامج التعليمي PHP بواسطة W3Schools
Guzze هو عميل PHP HTTP يسهل إرسال طلبات HTTP و Trivial للاندماج مع خدمات الويب.
DesignPatterNSPHP هي مجموعة من أنماط التصميم المعروفة وبعض رمز العينة كيفية تنفيذها في PHP 7.4. كل نمط لديه قائمة صغيرة من الأمثلة.
CRAV Portable Flat-File CMS مع نظام إدارة حزمة قوي من الإضافات والموضوعات و GRAV نفسها.
دليل 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 الكود الأساسي.
المستوى: جميع المواقع (نفس الرمز لجميع المواقع المشتركة ، عالمية ، شائعة)
( النموذج ، الاستجواب)
فئة dbconn_allsites. السمة هي سيممير إلى الفصل . سبب السمات هو بنية الشفرة الصافية:
قد تستخدم بعض الصفات المزيد من السمات - صافي - المزيد من الآباء ، ولكن قد يمتد فقط من فئة واحدة - التسلسل الهرمي .
لا أستخدم السمة - كان لدي بعض الأخطاء كما هو الحال في الرمز المتقدم بشكل متكرر.
// see class script // see class script
في الأساس db_allsites.php القراءة (RR ، تقرير) يعمل مثل الرمز في:
/awww/www/clean_architecture.md. لقد فعلت ذلك في الإصدار 10 يناير 2023.
B12PhPFW الكود الأساسي.
المستوى: جميع المواقع (نفس الرمز لجميع المواقع المشتركة ، عالمية)
// see class script // see class script لتجنب أوامر INC. في العديد من البرامج النصية
B12PhPFW الكود الأساسي.
المستوى: جميع المواقع (نفس الرمز لجميع المواقع المشتركة ، عالمية ، شائعة)
// see class script // see script B12PhPFW رمز الوحدة النمطية.
المستوى: الوحدة النمطية (نفس الكود للوحدة النمطية EE ، مثل MNU أو MKD أو MSG = Blog)
لتنفيذ البرنامج ، فإن التسلسل الهرمي للفصل هو: كما لو أن جميع السمات والأساليب في الفئات أعلاه Home_CTR موجودة في فئة Home_CTR. أي أنها في $ هذا الكائن الذي تم إنشاءه (تم إنشاؤه في الذاكرة) في Home_CTR (والذي يبدو أنه يحتوي على جميع الفئات - أوصاف السمات والأساليب فوقه).
لماذا هي السمات والأساليب المشتركة (المشتركة) في التسلسل الهرمي أعلاه home_ctr وليس في home_ctr؟
لا نريد الكتابة في كل برنامج نصي Home_ctr رمز مشترك (مشترك) الكامل أعلاه Home_ctr .
أعلى ..... dirs ..... uml ..... dm ..... ide ..... crud ..... sw fw
انظر رمز المعلومات:
http://phporacle.eu5.net/fwphp/glomodul/z_examples/03_info_php_apache_config_scripts.php
https://github.com/slavkoss/fwphp/blob/master/fwphp/glomodul/z_examples/03_info_php_apache_config_scripts.php
B12PhPFW مختلف جدًا عن (الكل؟) أطر أخرى PHP (أفضل "Heal & Crud Code Heacles") لأنه:
تشبه dirs مثل وحدة النماذج النمطية. fmb https://github.com/ngrt/mvc_todo - ترميز جيد جدًا (ولكن على مثال بسيط ، لا توجد غلائق ، لا توجد أسماء ...) MVC_FW DIR أو Search Google: Github PHP Framework
وأسباب أخرى مذكورة أدناه
راجع Mini3 PHP Framework https://github.com/panique/mini3 وهو أمر ممتاز نادرًا لم يكن مثال MVC بسيط (الكثير من الترميز الجيد). إن التوجيه الخاص بي باستخدام قيم المفاتيح مختلف ولكن الإرسال باستخدام أساليب الفصل المنزلي يعتمد على 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 Table Rows Crud هو أبسط وأسرع أفضل كرود ولكني أفضل أي jQuery ، لا Ajax. JavaScript الوحيد الذي أحتاجه هو الحوار نعم أو لا.
صفوف Crud في أغنية Table (#ID ، فنان ، مسار ، رابط) . MINI3 Framework https://github.com/panique/mini3 هو أنني أفضل لتعلم هيكل عظمي PHP و Frameworks. وحدة ADRS الخاصة بي في مجموعة وحدات Glomodul-Group هي mini3 على B12PhPFW. لماذا ؟ أعتقد أن المواقع الكبيرة mini3 هي بسيطة - لا الأسهم ...
انظر البرامج النصية.
أبسط crud ..... index.php ..... home_ctr ..... home (صفحة الجدول) ..... إنشاء ..... قراءة (ملف تعريف المستخدم - نموذج) ..... تحديث .... محول
نحتاج إلى نقطة إدخال واحدة في الوحدة النمطية لتجنب الفوضى مع الروابط (HTTPS: // ... الروابط غير واضحة ، والأفضل من ذلك هي المكالمات والطريقة).
<?php
/**
* J:awwwwwwfwphpglomoduladrsindex.php
*/
. . .
/**
* J:awwwwwwfwphpglomoduladrsindex.php
* DISPATCHING is calling method according URL parts (extracted with ROUTING code).
* Because MODULE METHODS PARAMS ARE MOSTLY GLOBAL (same for all modules), eg paths,
* to avoid lot of same code in modules (code redundancy) :
* 1. WE ASSIGN GLOBALS IN PARENT CONF&UTL CLS METHOD
* (not knowing which module is going to use them)
* 2. THEN, FROM PARENT CLS WE CALL METHOD IN CHILD MODULE CLS.
* Module method knows how to use globals
* and what module needs for parameters beside globals.
*/
/**
* ns (NAMESPACES) we use in clses script autoloading.
* vendor_namesp_prefix processing (behavior) clsdir [ cls] [as clsalias]
* eg B12phpfw is vendor_namesp_prefix ; //FUNCTIONAL, NOT POSITIONAL
* FUNCTIONAL parts are not requirad, we use them to better understand script purpose.
*eg clsdir - only this part of namespace is POSITIONAL, CAREFULLY !
*/
/**
* **HELPNS
* first namespace part B12phpfw is NOT REQUIRED : vendor's name NS's prefix (FUNCTIONAL NSPART)
* 2nd ns part m o d u l e is NOT REQUIRED : FUNCTIONAL NSPART = processing (behavior)
*
* FNSPs (FUNCTIONAL NS PARTS) are ignored by fw, ee we name them as we wish.
* We use FNSPs as description to depict WHAT CODE DOES (processing, behavior).
* May be more functional ns parts as we wish - all are ignored !
*
* PNSP (POSITIONAL NS Part) CAREFULLY! : LAST NS part (BEFORE CLSNAME IF ANY) eg "blog" is DIRNAME.
* PNSP is actually (de facto, in fact, indeedded) DIRNAME and module name.
* Path OF DIRNAME (of PNSP) is in $pp1 array,
* used for Autoload class to include classes from dir DIRNAME.
* Autoload class is include, global, common, reusable.
*/ index.php ..... index.php ..... home_ctr ..... home (صفحة الجدول) ..... إنشاء ..... قراءة (ملف تعريف المستخدم - نموذج) ..... تحديث .... محول
. . .
* ------------------------------------------------------------------------------
* ROUTING TBL - module links, ( IS OK FOR MODULES IN OWN DIR ) key-keyvalue pairs :
* LINK ALIAS IN VIEW SCRIPT (eg l d d) => HOME METHOD TO CALL (eg del_ row_do)
* ------------------------------------------------------------------------------
* 1. ALL MODULE VIEWS LINKS SHOULD BE IN $ pp1_ module, SHAPED SO :
* 2. $ pp1 -> urlqrystringpart1_name => i/M E T H O D NAME /param1name/ param1value. . . 2 , 3. . .
* (urlqrystring LAST PART IS IN VIEW SCRIPT WHICH KNOWS IT , eg idvalue !)
* 3. IF LINK key-keyvalue pair IS NOT HERE THEN EG :
* in URLurlqrystring : QS . ' i/home/ ' home must be M E T H O D NAME in this script.
* Eg http: //dev1:8083/fwphp/glomodul/adrs/?i/ex1/ or
* http: //dev1:8083/fwphp/glomodul/adrs/?i/home/ or
* http: //dev1:8083/fwphp/glomodul/adrs/
*/
/** *****************************************
* CALL DISPATCH M E T H O D S
* they 1.call other fns or 2.include script or 3.URL call script
* CALLED FROM abstract class Config_ allsites, m ethod __c onstruct
* so: $pp1->call_module_m ethod($akc, $pp1) ;
* $ a k c is m o d u l e m ethod (in MM Home_ ctr, not global fn !!
* because MM Home_ ctr knows akc parameters)
* ******************************************
*/index.php ..... index.php ..... home_ctr ..... ** الصفحة الرئيسية (صفحة الجدول ..... إنشاء ..... قراءة (ملف تعريف المستخدم - نموذج) ..... تحديث .... محول
<!-- 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 EG أكثر وضوحًا وقابلة للقراءة. فلماذا يكون OOP أفضل؟
يقول البعض: "هل خطأ؟" - على سبيل المثال ، لا يمكن أن تحصل على الغوريلا على الموز وغابة الغوريلا الكاملة (جميع الطبقات العليا مع تبعيات معقدة ).
على سبيل المثال ، تساعد الواجهات في الحصول على الموز فقط ، لكن الترميز معقد-لم أتمكن من العثور على أمثلة رمز العمل القوية حول هذا الموضوع.
j: awww www pendor b12phpfw db_allsites_intf.php (17 Hits) السطر 15: الدالة العامة الثابتة get_or_new_dball (سلسلة $ $ _from = ' غير معروفة المتصل ') ؛ السطر 16: الوظيفة العامة الثابتة مغلقة () ؛ السطر 17: وظيفة عامة ثابتة getDBI () ؛ السطر 18: وظيفة عامة ثابتة setdo_pgntion ($ new_val) ؛ السطر 22: // 11111 *************************************** الوظائف: السطر 24: الوظيفة العامة الثابتة get_cursor (// كائن $ pp1 // مثل oracle cursor // بدلاً من ذلك rr line 27: static public funct وظيفة عامة ثابتة RR_LAST_ID (سلسلة $ TBL ، ARRAY $ أخرى = [] ) : int ؛ ؛
السطر 45: // الدالة العامة الثابتة pre_cc_uu (السطر 56: الوظيفة العامة الثابتة uu ($ tbl ، $ flds ، $ حيث ، $ binds = []) $ ph_val_arr): String ؛
تعمل وحدة الفاتورة على سبيل المثال مع جدولين: الفاتورة والفواتير (أو ثلاثة جداول: فاتورة ، فاتورة ، فاتورة _Items). Simmilar "Simplest Solution" Three Dirs M ، V ، C سيئة - :) - وضع عشاق 3DIRS وضع تقنية الترميز (M ، V ، C رمز الفصل) في المقدمة بدلاً من الصفحات (الوظيفة ، منطق العمل).
لم يعد RR Banana في الغابة بعد الآن ، فإن Gorilla و Jungle ليس سوى فئة مجردة واحدة config_allsites التي هي فعلية $ pp1 = الخصائص.
BANANA $ pp1 = قد تتسبب لوحة الخصائص في صعوبات في وحدات إجمالية (مركبة ، مؤلفة ، متعددة) مثل المدونة ، الفاتورة ... ولكن $ pp1 هي حتما (الوطائبة ، الضرورة) الغوريلا-الانتقام ولا يمكن تبسيطها. عملت 20 عامًا في $ pp1 و 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 ...).
لقد قمت بعمل رمز B12PHPFW الأكثر بساطة استنادًا إلى الأفكار في مدونة Jazeb Akram CMS - تصميم الصفحات و Mini3 PHP FW - Code Skeleton ، التوجيه. كتب عن أمثلة رمز PHP ليست جيدة.
CMS Blog Video (7.7 GB) Jazeb Akram: Udemy - دورة PHP MySQL الاحترافية الكاملة مع 5 مشاريع - نادرًا ليس تعليميًا بسيطًا . مماثل هو الفيديو (12.3 جيجابايت) EDWIN_DIAZ_PHP للمبتدئين - تصبح مشروع PHP Master - 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 بسيط ولكن رمز جيد لتعلم php (قراءة crud فقط) ، وشرح الوسيطة . للتوجيه المعقد والأدوات الوسيطة ، لذلك ليس من السهل!
https://github.com/ngrt/mvc_todo تم شرح رمز في هذه المقالة المدونة 2017.12.17:
https://dev.to/jorgecc/a-minimalist-mvc-project-using-php-and-without-a-framework-4pd8
https://github.com/trpb/immutablemvc
آخر :
لقد قمت بإجراء العديد من التغييرات (آمل أن تكون تحسينات) ما فعلته لأنني لا أحب الحلول المقترحة في أفضل أطر PHP وفي مصادر التعلم المذكورة أعلاه (ترميز خاص على سبيل المثال ، تعليمي اجتياز). لا يتم شرح الأسهم (REusables ، Globals ، بما في ذلك) بشكل جيد وترميزها.
أعتقد أنه يجب أن يكون بسيطًا/سريعًا/مهنيًا: الأسهم ، التوجيه ، التخلص ، مساحات الأسماء الوظيفية وتحميل الفئات ، تحرير النص الغني على الويب ...
هذا هو السبب في أنني قضيت عدة ساعات في هذا الوقت (تهدئة الوقت الضخمة التي ينبغي أن تفعل مؤلفي أدوات تبرز ، وليس مستخدمي الأدوات مثلي).
يبدو هذا الهيكل العظمي من الكود معقدًا مقارنةً بـ https://github.com/panique/***Mini3*** الذي قد يكون أفضل قالب رمز FW للمشاريع الأصغر (وتعلم PHP).
بالنسبة للمشاريع الكبيرة - تعتبر Resusables التي أستخدمها هنا مهمة للغاية ، مثل الوحدات النمطية في المجلدات الخاصة (ليس كلها في 3 dirs m ، v ، c) .
حول الأسهم (Globals) انظر المناقشة:
https://medium.com/@sameernyaupane/php-software-architecture-bart-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 Code Skedon (إطار عمل يسمى "B12PhPFW") - الرمز الأساسي هو حوالي 50 كيلو بايت. الإصدار 7.: PHP 7 و Trait DBI في أكتوبر 2020.
لماذا ؟ لا أحب الحلول المقترحة في أفضل أطر PHP (Laravel ، Simfony ، Yii ...) ومصادر التعلم (الإنترنت ، الكتب). أعتقد أن رمز الفاتورة على سبيل المثال يجب أن يكون في مجلد خاص مثل Oracle Forms Form. أعتقد أنه يجب أن يكون بسيطًا/سريعًا/احترافيًا: Globals ، التوجيه ، التخلص ، التحميل الفصول ، تحرير النص الغني على الويب - وهذا هو السبب في أنني أهدرت ساعات طويلة في ترميز B12PhPFW (هدر الوقت الكبير الذي يجب أن يفعل مؤلفي البرامج ، وليس مستخدمي SW مثلي).
لماذا لا أحب الحلول المقترحة وما فعلته (آمل) تحسينها. الميزات الملونة الحمراء هي أسباب رئيسية لـ B12PhPFW ، لكنني قمت أيضًا بتحسين ميزات أخرى. :
TraversyMVC (has video) and Mini3 are simplified, with some (many?) differences compared to Laravel, Simfony, Yii, Falcon... B12phpfw is much more different - see red colored features. PHP framework authors do not show such fitures table, for me it is hiding fitures (sell cat in bag).
| ميزة | B12phpfw | Mini3 MVC PHP fw and TraversyMVC |
|---|---|---|
| 1. Modules in own folder like Oracle Forms .fmb | has - it is one of main reasons for B12phpfw ! | has not all forms/reports in 3 dirs: M,V,C |
| 2. Name spaced classes (functional name spacing) | لديه | Mini3 which is in my opinion better than TraversyMVC : https://github.com/panique/mini3 has name spaced classes. TraversyMVC blog has not |
| 3. Number of folders (my opinion) | أفضل | to many |
| 4. Minimal PHP code to learn (medium) PHP (my opinion) | optimal (but we could add additional code) | good but not enough eg see WYSIWYG, globals... |
| 5. Functional methods, attr. etc naming (my opinion) | جيد | could be better |
| 6. Global classes, methods etc (my opinion) | good see below CRUD test output | سيء |
| 7. (Posts edited with any) WYSIWYG editor | لديه | has not |
| 8. Home_ctr or Home_mdl CRUD layer methods do not know for underlaying Db_allsites layer PDO methods, MySql, Oracle... | has much improved | has not |
| 9. OOP | لديه | has like Mini3 |
| 10. namespaces (own PSR-4 (or Composer's) autoloading classes scripts) | improved | Mini3 has, TraversyMVC blog has not |
| 11. All scripts are included (ee no http jumps except some jumps in other module) | لديه | Mini3 has, B12phpfw took it from Mini3, TraversyMVC blog has not |
| 12. jQuery only for Bootstrap 5 | نعم | Mini3 has own CSS, TraversyMVC blog has |
| 13. AJAX, JSON | has not | Mini3 has basic jQuery AJAX explained, TraversyMVC blog has |
| 14. server side validation | لديه | لديه |
| 15. authentification (log in / out) | لديه | has not, TraversyMVC blog has |
| 16. authorization (only logged in users may execute some code ee CRUD code...) | لديه | Mini3 has not, TraversyMVC blog has |
| 17. Own debugging very simple and useful : msg in pre tag or popup JS msg). xdebug also helps. | لديه | has not |
| 18. PHP code here is good for (more) large sites | نعم | لا |
| 19. multilanguage pages | has, see https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/multilang/ | has not |
| 20. DM (Domain model) | has, simplest possible, no complicated namespaces, interfaces, adapters, data mappers... see https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/02_MVC/03xuding_glob | has not |
(Apache or nginx...) WEB SERVER DOCROOT J:\xampp\htdocs\, my is virtual host J:\awww\www\
│
│
│─I.fwphp (app or SITE1 or APLications1) = Main site dir. fwphp is optional name.
│ └── Contains MODULE GROUPS eg APLication1 or glomodul (under which is www =main menu) :
│ glomodul, finance, material, salary
│ └── They contain MODULES eg www or post under glomodul dir
│
│
│─II.index.php redirects to main menu url : /fwphp/glomodul/www/index.php
│
│
│─III.vendor
│ └── b12phpfw dir = internal resources, external sresources are in other vendor subdirs.
│ Here are class Autoload and other for all sites shared - common - global
│ classes Db_allsites and Config_allsites....
│ └── erusev = external resources
│ └── parsedown = external resources
│ └── simplemde
One of (Apache) WEB SERVER DOCROOT-s, my is J:\awww\www\
|
|
|-- **I. fwphp** (app) # **or SITE1, or APLications1** = Main MVC site dirs structure,
| | # my J:awwwwwwfwphp = Apache_docrootfwphp
| | # Contains **MODULE GROUPS** eg APLication1 or **www** (main menu), **glomodul**,
| | # **finance**, **material**. fwphp is optional name. Namespace is only one: B12phpfw.
| |-- ~~Controllers~~ # **NO M,V,C dirs but dirs are like Oracle FORMS form module.fmb !**
| └── ~~example.php~~ # NO Example Controller
| |
| |
| |-- ~~Models~~ # **NO M,V,C dirs** ee NO Models directory
| └── ~~example.php~~ # Example Model with functionality explanation
| |
| |
| |--~~Views~~ # **NO M,V,C dirs** ee NO Views directory, no template engines (PHP is template language)
|
|
| |-- ~~app.php~~ # **NO** Main fw file. nice abstraction (questionable value in real life programming) :
| | # **$app = new App(); $app->autoload(); $app->config(); $app->start();**
| | # Where is UML diagram for this beauty ?
| | # I think much better is **new Home_ctr($pp1) ** // Home_ ctr "inherits" index.php
| | # ee "inherits" $pp1, (global & module prroperties palette array),
| | # but also inherits see B12phpfw core UML diagram below. .
| |
| |-- ~~classes~~ # **NO** classes directory for autoloading.
| | | # B12phpfw global classes are in vendor/b12phpfw dir, module clses are in module dir.
| | └──-- ~~controller.php~~ # **NO** but **in module dir global abstract DISPATCHER (RESPONSE) class**
| | | # **Home_ctr ** extends Config_allsites
| | |--~~model.php~~ # **NO, no model class for each table** but **in vendor/b12phpfw** dir
| | # global abstract CRUD class **Db_allsites ** includes Dbconn_allsites
| | # In Db_allsites are **cc, rr, uu, dd methods** instead model class for each table !
| | # cc, rr, uu, dd methods are like Oracle Forms
| | # pre-insert, pre- and execute- query, pre-update instead model class for each table !
| | # To me seems not needed : model class for each table and ORM-s, active records
| |
| |-- ~~config~~ # **NO** config dir but in vendor/B12phpfw dir
| | | # **Config_allsites** extends Db_allsites (see core UML diagram).
| | | # Here is property palette array.
| | |-- ~~database.php~~ # = in vendor/b12phpfw **Dbconn_allsites.php**
| | |-- ~~session.php~~
| |
| |-- ~~helpers~~ # **NO** helpers dir, but classes Db_allsites and Config_allsites.
| |-- ~~examplhelper.php~~ # **NO** but own debugging (and Xdebug php extension - I do not use it any more).
|
|
|-- **II. index.php** # redirects to main menu url fwphp/www/index.php
|
|
| |-- **III. vendor **
| |--**B12phpfw** # B12phpfw has own (internal) resources here, external in other vendor subdirs.
| # Here are **class Autoload and other for all sites shared - common - global**
| # **classes** Db_allsites and Config_allsites....
|
|-- .htaccess # **NO** .htaccess (Apache mod_rewrite) URL rewriting all requests to MVC endpoint
# index.php (single module entry point). B12phpfw has **QS=?** constant instead.
Common fw dir structure are items in marked with NO - are not used in B12phpfw but basics are same. B12phpfw is better for large sites.
Top......Dirs.....UML.....DM.....IDE.....CRUD..... SW fw
For me SW fw is a few tens (hundreds) of code snippets for ctrl+c,v (global code snippets don't even need ctrl+c,v, so they are highly desirable).
See "What is SW fw (Software framework)" (using mkd in fwphp/glomodul/mkd/02/01_fwphp/ PHP_DIP_DI.txt/ ) which states :
Code flow terms : DI is about code flow tie - wiring , IoC is about code flow direction , and DIP is about code flow shape .
To be sure, use DI or IoC with DIP.
B12phpfw means: B=table rows blocks for CRUD like in Oracle Forms eg invoice.fmb master (B1) and detail rows (B2).
12 = steps of code flow must be clear, good explained. cs01 means code flow step 1.
phpfw = PHP framework = code skeleton for menus & CRUD (and many other functionalities,
I never understood enough fw authors explanations which is one of reasons why I do not believe them).
Code is small and simple but needs :
few hours (advanced user) - days (intermediate) - weeks/months (beginner) to understand it.
Understand code is must for any good code skeleton !
Clean code : "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler).
When you are dead, you don't know that you are dead. It is difficult only for the others. It is the same when you are lazy (or stupid).
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." (John Woods). adapter "Clean code reads like well-written prose" (Grady Booch). Good code reads close to natural speech.
Naming is the best tool we have to express what we do in code (avoid comments). Classes and variables are nouns: Price, CurrentTrade. Booleans are predicates: isScheduled, isRunning. Methods should start with a verb: getStrategyResult, createStrategyResult. Common naming errors : Very small names ( $tr, dd() ), Names that are not real words ($dgrtty), Methods that are nouns.
Notable package does something special, is also frequently innovative.
I developed B12phpfw in my free time (my work for last 20 years was : Oracle Forms & Reports 6i and Crystal reports. We wanted migrate them to PHP - never happend
because I cound not find near so good tool as abandoned Oracle Forms 6i - shame. See also below "...compared to all PHP frameworks...".
B12phpfw is good for developing large sites (more of them under web server root dir. path).
Innovative is :
Compared to all PHP frameworks and learning sources :
Based on best PHP learning code I could find. See [web server root dir. path]fwphp/glomodul/z_examples, where :
Conclusion : B12phpfw is most useful for CRUD in msg-blog and simmilar modules, so it is precisely B12phpCRUDfw . For mnu and mkd markdown WYSIWYG editor and simmilar modules we do not nead B12phpfw code skeleton, but I did it.
Includes and method calls instead URL jumps (http// jump to pages) - this is interesting question. http// jump to pages in B12phpfw is used only to jump somethimes in other module.
It is a shame that Oracle does not support the latest client-server SW Forms6i (replacement for the infamous Power objects) and Reports6i, but only the WEB version, which has repeatedly changed some basic functionalities (incompatibilities as with Microsoft tools) and which, for smaller companies, has too many flaws . Why does the WEB version of F6i, R6i not generate something like razor code or PHP code that do not need several servers and have no problem with large Java libraries, with starting... (The simplest Blazor form (#ID, name) is ~ 6 MB, PHP form 6 kB !)
Mr. Ferrante says "strongly discourage" which means "with the lure of Power objects, F6i, R6i..." we have hooked you on expensive and for smaller businesses inappropriate SW.
Is this the reason why very few developers start new projects with Oracle Forms, the transition from Oracle to Java, APEX (declarative programming with attributes - can clicking be done seriously!?) . These are harmful wanderings similar to those of Microsoft, which is unable to explain the basics of, for example, Blazor without killing several months of hard work for a student?
Do Microsoft, Oracle and other manufacturers of SW tools have anyone from real life who can save us from their children's games?
Any systematic work is (at first) very difficult . For example, high officials do not work systematically. The proof is incompatible SW tools, world crises (robbery of savings by inflation, printing money), crimes of inhuman predators like Hitler, Milošević, Putin, some religious high officials and their "brainwashed" believers (kill dissenters, mask women, ban their education and some other rights, for example abortion because of the imbecile idea that the fetus should be preserved at the cost of killing both the mother and the child through poverty - let them support the unwanted child and no one will ask for an abortion). In an orderly, non-anarchic society of educated people, such non-humans would not come to power. Voters do not recognize high officials who work unsystematic, ie they are not aware that by not going to the polls or by electing always the same incompetent / liars / thieves they are working against themselves, ie through ignorance / stupidity they fall prey to intense brainwashing by propagandists and commit a kind of suicide. Vote for someone else so that we don't always get squeezed by the same mafia octopuses of incompetent / lying / thieving high officials.
We have to look at the whole - all the (main) functions of the code , but PHP learning resources are more self-advertising to make money, not teaching all the (main) functions of the code. I wish Microsoft Oracle, PHP "experts - ha,ha" and others would teach (eg Blazor) the way I teach PHP here . Who can understand many megabytes of inexplicable inclusions? If something goes wrong look for an error in many megabytes of code? It's child's play for me, as complicated as Oracle Forms after the last client-server version of 6i. Installing, calling and maintaining servers is an (inexplicable) science. The post-6i call pattern is replaced by Oracle every few years with an incompatible one (problem: huge Java core library!). Microsoft's development tools, like Oracle's, are incompatible and some have been abandoned like Oracle Forms 6i.
منتهي :
I not intend to do :
Difficult parts are :
version 8.0.0.0 means (https://semver.org/) :
November 2021. Current version code is 8. Msg module version 8 is not finished, but is visible what should be done during next few months (Mkd ver. 8 was finished in half hour, Mnu simmilar, Msg needs much more time because of bootstrap 5, improve CRUD sintax...).
See http://phporacle.eu5.net/ (freehostingeu - fast, stable, has free MySQL) how it should work.
What's new in version 8.1.0.0 :
User (TODO: or any) module may be caled from blog module so http://dev1:8083/fwphp/glomodul/blog/?i/home/p/1/ -> login -> tables (dashboard) ->admins
but also independent of some compound module so : http://dev1:8083/fwphp/glomodul/user/ .
What's new in version 8.0.0.0 :
2021.08.28 ver 7.0.5 : I added folder (module) WEBSERVERROOT/fwphp/glomodul/img_gallery
J:awwwwww is my WEBSERVERROOT.
J:awwwwwwfwphp is MYDEVSITEROOT1. You may have more MYDEVSITEROOT2, 3... See how in WEBSERVERROOT/index_laragon.php script.
glomodul is group of folders - modules which are not 01mater or 02financ or 03... glomodul may be named othermodules.
img_gallery module is first lesson about (theory behind) code skeleton (application architecture) B12phpfw
2020.09.30 DONE version 7.0.0.0 1. declare(strict_types=1) ; - PHP 7 2. DBI improved : trait Db_allsites instead class Db_allsites. 3. Each DB table (persistent storage) has adapter class Tbl_crud : which uses B12phpfwcorevendor/B12phpfwDb_allsites and implements Interf_Tbl_crud This means that : 1. Module's views or ctrs, eg blog module (see blog folder) work much easier with more Tbl_crud, ee with own Tbl_crud and with other tables Tbl_crud's. 2. class Home_ctr extends class Config_allsites. ( Logically all is in Home_ctr ).
2020.09.05 DONE On Linux demo sites : some PHP statement works different than on Windows (about dozen incompatibilities), eg links do not work in msg module, but work in mnu and mkd modules) : DONE in wsroot_pathvendor/b12phpfwConfig_allsites.php :
Error on Linux not on Windows : $REQUEST_URI = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_STRING);
No error on both OS : $REQUEST_URI = filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL) ;
I use xampp-portable-windows-x64-8.1.5-0-VS16.7z 92 Mb or newer on newest Windows 10, 64 bit. No more : Laragon portable laragon.7z, 19 MB. No more WAMP because is not fully portable, Composer needs coding displayed below and it is only for Windows. It seems WAMP and Laragon not giving newest/simplest solutions as xampp does.
WAMP does not like PHP in Windows PATH variable, so :
1. I installed Composer-Setup.exe and removed PHP from PATH.
2. **C:composercomposer7.bat** :
```
@echo OFF
:: in case DelayedExpansion is on and a path contains !
setlocal DISABLEDELAYEDEXPANSION
J:wamp64binphpphp7.2.9php.exe "%~dp0composer.phar" %*
```
Save file along with the originally installed composer.bat file.
3. Now call the php7 composer with the new command:
```
In Windows CLI, cd J:awwwwww and as admin :
composer7 selfupdate (1.8.4, 2019-02-25, Use composer self-update --rollback to return to version 1.7.3)
composer7 update
```
https://kevinsmith.io/modern-php-without-a-framework/
https://github.com/PatrickLouys/no-framework-tutorial
https://github.com/mmeyer724/Frameworkless
https://symfony.com/doc/current/create_framework/index.html
http://dev1:8083/fwphp/glomodul/mkd/?edit=001_MDcheatsheet.txt
http://dev1:8083/fwphp/www/
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/01_oracle_DB_18c_instalac.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/02_oracle_APEX_20_1_instalac.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/03_1oracle_apex_sales_module.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/03_2oracle_apex_sales_apl_cloud.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/devsuite10g_instalac.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/devsuite10g_F6i_to_apex.txt
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_vbox/001_instalac_moj_vbox_oralin76.mkd
http://dev1:8083/fwphp/glomodul/mkd/?showhtml=J:/awww/www/readme.md
Top.....Dirs.....UML.....DM.....IDE.....CRUD.....SW fw
SimplestCRUD index.php.....index.php.....Home_ctr.....home (table page).....create.....read (user profile - form).....update....adapter
See http://dev1:8083/fwphp/glomodul/mkd/?i/edit/path/J:awwwwwwreadme_thoughts.md for my earlier thoughts.