Files
development/README.md
2025-08-18 09:36:10 +09:00

127 lines
3.4 KiB
Markdown

# PHP Core Library
## Code Standard
* Uses PSR-12
* tab indent instead of 4 spaces indent
## General information
Base PHP class files to setup any project
* login
* database wrapper
* basic helper class for debugging and other features
* admin/frontend split
* domain controlled database/settings split
* dynamic layout groups
## NOTE
There are three branches:
### master
The active branch, which is the namespace branch.
Compatible with PHP 8.1 or higher
### legacy (deprecated)
The old non namepsace format layout.
This is fully deprecated and will no longer be maintaned.
last tested PHP 5.6 and PHP 7.0
### development
Any current development is done here
## Static checks
With phpstan (`4dev/checking/phpstan.sh`)
`vendor/bin/phpstan`
With phan (`4dev/checking/phan.sh`)
`vendor/bin/phan --progress-bar -C --analyze-twice`
pslam is setup but not configured
## Unit tests
With phpunit (`4dev/checking/phpunit.sh`)
`www/vendor/bin/phpunit -c $phpunit.xml 4dev/tests/`
## Other Notes
### Session used
The following classes use _SESSION
The main one is ACL\Login, this class will fail without a session started
* \CoreLibs\ACL\Login
* \CoreLibs\Admin\Backend
* \CoreLibs\Output\Form\Generate
* \CoreLibs\Output\Form\Token
* \CoreLibs\Template\SmartyExtend
### Class extends
The following classes extend these classes
* \CoreLibs\ACL\Login extends \CoreLibs\DB\IO
* \CoreLibs\Admin\Backend extends \CoreLibs\DB\IO
* \CoreLibs\DB\Extended\ArrayIO extends \CoreLibs\DB\IO
* \CoreLibs\Output\Form\Generate extends \CoreLibs\DB\Extended\ArrayIO
* \CoreLibs\Template\SmartyExtend extends SmartyBC
### Class used
The following classes use the following classes
* \CoreLibs\ACL\Login uses \CoreLibs\Debug\Logging, \CoreLibs\Language\L10n
* \CoreLibs\DB\IO uses \CoreLibs\Debug\Logging, \CoreLibs\DB\SQL\PgSQL
* \CoreLibs\Admin\Backend uses \CoreLibs\Debug\Logging, \CoreLibs\Language\L10n
* \CoreLibs\Output\Form\Generate uses \CoreLibs\Debug\Logging, \CoreLibs\Language\L10n
* \CoreLibs\Template\SmartyExtend uses \CoreLibs\Language\L10n
* \CoreLibs\Language\L10n uses FileReader, GetTextReader
* \CoreLibs\Admin\EditBase uses \CoreLibs\Debug\Logging, \CoreLibs\Language\L10n
### Class internal load
Loads classes internal (not passed in, not extend)
* \CoreLibs\Admin\EditBase loads \CoreLibs\Template\SmartyExtend, \CoreLibs\Output\Form\Generate
* \CoreLibs\Output\From\Generate loads \CoreLibs\Debug\Logging, \CoreLibs\Language\L10n if not passed on
* \CoreLibs\Output\From\Generate loads \CoreLibs\Output\From\TableArrays
## PHP unit testing and Intelephense
Intelephense can not directly read phar files so we do the following
In the workspace root we have `.libs/`, be in the workspace folder not the `.libs/` folder
`php -r "(new Phar('/path/to/.phive/phars/phpunit-9.6.13.phar'))->extractTo('.libs/phpunit/');"`
andd add in vscode Intelephense > Enviroment: Include Paths (intelephense.environment.includePaths)
```json
"intelephense.environment.includePaths": [
"/.libs/phpunit/"
]
```
Add `.libs` to the master .gitingore
### Update phpunit
On a version update the old phpunit folder in .libs has to be removed and the new version extracted again
## Javascript
The original edit.js javascript functions are now in utils.js or utils.min.js.
The development for those files is located in a different repository
General: <https://[service]/CodeBlocks/JavaScript.utils>
Org: <https://[serverice]/[org]/Code-Blocks.JavaScript.utils>