PHPMaker 2019 is a major upgrade from v2018, it introduces some new features which are not fully compatible with old versions. When you open an old project in v2019, PHPMaker will try to convert the changes for you. However, the conversion cannot be 100% and you'll need to do some updates yourself. Please read the follows carefully, review your code, update and test it before deploying the new scripts to your production server.
Require PHP 5.5 or higher. If you use PhpSpreadsheet extension (see below), PHP 5.6 or higher is required.
Use Composer to manage required third party packages. Make sure that you enable PHP CLI and install Composer (see Generate Settings). To use Composer, please make sure that you are online during the generation process. After the first generation, Composer will download all the required packages, it may take a long time, please be patient. Later generation will not run "composer update" again unless you enable/disable some features that require third party packages. Note that the packages downloaded by Composer are put under the "vendor" subfolder.
PHP namespaces are used. The generated application is now under the default PHP namespace PHPMaker2019\<project>. If your server events need to create instance of third party classes in other namespace, you need to update your code and add namespaces to your class names.
Since namespace is used, the EW_ and ew_ prefixes are removed, e.g. EW_PROJECT_NAME becomes PROJECT_NAME and ew_ExecuteScalar() becomes ExecuteScalar(). Also, the c prefix for class names are also removed, e.g. cListActions becomes ListActions.
Method names are changed to camel case, e.g. $menu->addMenuItem(). Global functions still use pascal case, e.g. CurrentUserName(). (Note that PHP functions names are case-insensitive, read User-defined functions.)
No more Page_* methods (EXCEPT for server events) e.g. $this->Page_Terminate() becomes $this->terminate().
Table and page classes are now generated separately under the "classes" subfolder and they are auto-loaded. You can create instances of all these classes in your server events or custom files easily without including them.
Some new global functions (e.g. Get(), Post(), Param()) are introduced, see Some Global Functions.
Always use PHP mysqli extension for MySQL, the old mysql extension is no longer supported.
Always use Microsoft PHP Driver for SQL Server for SQL Server, connection by COM functions is no longer supported.
Method name are changed to the more common camel case, e.g. ew_SetSessionTimer() becomes ew.setSessionTimer(). If your client side code calls any PHPMaker functions, you must update them.
If you used ew_Ajax() in your client side code, note that the function has been changed, see examples under Lookup Table.
Bootstrap 4 and AdminLTE 3
Make sure you re-generate all .css files, you can NOT re-use old .css files from previous versions. If you use your own external stylesheet, you MUST update it first.
AdminLTE 3 does not support Layout Options (e.g. Top Navigation which was used as horizontal menu in previous version) any more. There is only one layout now.
Not compatible with PHP Report Maker 11 (see below).
HTML Element IDs and CSS Class Names
This version supports caching the lookup table (if reasonably small) and it is enabled by default. The caching is done on server side so the page may be loaded slightly slower if you have many lookup fields in the table. You may however disable and fine tune this feature by the two new advanced settings, Use lookup cache and Lookup cache count (see Advanced Settings).
There is no more Top Navigation option in AdminLTE 3, the horizontal Menu extension (for registered users) is retired. However, there is a new option Navbar Item for menu items which allow you to put some (or all) menu items at the top navbar, see Menu Editor. You can show all menu items in the navbar on the top of the page, just right click the header of the Navbar Item column in Menu Editor and click Select All. In such case, the vertical menu will be hidden automatically. For mobile mode, the vertical menu is always used as mobile menu.
PHPExcel extension is replaced by the new PhpSpreadsheet extension. PhpSpreadsheet is next version of PHPExcel, note that it requires PHP 5.6 or higher.
There are always new phrases in new major version, make sure you update your non-English language files or some phrases will be missing in Multi-Language projects.
Compatibility with PHP Report Maker 11
Require PHP Report Maker v11.0.2. Note that PHPMaker 2019 uses Bootstrap 4 and AdminLTE 3 while PHP Report Maker 11 stills uses Bootstrap 3 and AdminLTE 2, there will be some visual differences when you switch from a PHPMaker page to a PHP Report Maker page and vice versa. If you prefer visual consistency, you may consider upgrade your PHPMaker project later. Bootstrap 4 and AdminLTE 3 will be supported in next major version of PHP Report Maker, v12.