Releases: gueff/myMVC
Releases · gueff/myMVC
3.4.0
added
\MVC\Config::set_MVC_SESSION_NAMESPACE: allows setting session namespace via Config class, too - as it also writes back to Session object- The new 2nd parameter
$oDTEventContextis now passed to executed Closures inEvent::bind()which provides various information about the context of the event. Example:Event::bind('foo.bar', function ($mPackage, DTEventContext $oDTEventContext){..});$oDTEventContext->get_sEvent(): event name bonded to$oDTEventContext->get_sEventOrigin(): original event name if bonded with a wildcard event name (e.g.foo.*)$oDTEventContext->get_mRunPackage(): contains optional data passing byrun; equal to parameter$mPackage$oDTEventContext->get_aBonded(): array with bonded listeners to the current event$oDTEventContext->get_sBondedBy(): key (of array$oDTEventContext->get_aBonded()) of concrete listener$oDTEventContext->get_sCalledIn(): where was the event called (file, lineNumber)$oDTEventContext->get_oCallback(): callback closure of concrete listener$oDTEventContext->get_sCallbackDumped(): dumped (readable) callback closure of concrete listener$oDTEventContext->get_sMessage(): message string with all details of the running event
- functions
display(): shorthand forDebug::display()on userlandinfo(): shorthand forDebug::info()on userland
\MVC\Debug::info&\MVC\Debug::display: optional 2nd parameter$aDebugBacktrace- Datatype class
application/library/MVC/DataType/DTEventContext.phpfor usage in Event Context application/library/MVC/Generator/DataType.php: DataType Generation has new optioncreateEvents(true|false): enable creation of events in datatype methods- config var
MVC_VIEW_TEMPLATE_DIR,\MVC\Config::get_MVC_VIEW_TEMPLATE_DIR: replacement for config varMVC_VIEW_TEMPLATESMVC_EVENT_ENABLE_WILDCARD(true|false); default=true: allow declaring listeners with wildcard, e.g.: Event::bind('foo.bar.*', ... ); matches to event 'foo.bar.baz': Event::run('foo.bar.baz'); mandatory: asterisk*at the end (+\MVC\Config::get_MVC_EVENT_ENABLE_WILDCARD,\MVC\Config::set_MVC_EVENT_ENABLE_WILDCARD); https://trello.com/c/K7mb4ooBMVC_EVENT_LOG_RUN(true|false); default=false: logging each running event into MVC_LOG_FILE_EVENT (+\MVC\Config::get_MVC_EVENT_LOG_RUN,\MVC\Config::set_MVC_EVENT_LOG_RUN)
\MVC\Event::listen: alternative writing to Event::bind()\MVC\Event::getListeners: alternative writing to Event::getBonded()\MVC\Event::getBonded: returns array with bonded Listeners of all Events (default), or of a certain event$sEvent\MVC\Registry::delete: deletes a variable in registry\MVC\Dir::recursiveCopy: copies a directory recursively\MVC\Dir::isEmpty: checks if a directory is empty\MVC\Dir::remove: removes a directory\MVC\Dir::make: creates a directory\MVC\Dir::exists: checks if a directory existsapplication/library/MVC/DataType/DTKeyValue.php: events before/after in creator, getter and setter- config vars
MVC_MODULE_PRIMARY_*for primary module - config var
MVC_MODULE_PRIMARY_ESSENTIAL: if a module has the file it is a primary one - parameter types in methods
- Frontend:
public/site.webmanifest, various favicons \MVC\Strings::isMarkup: checks whether a string contains markup\MVC\Strings::ulli: creates a markup<ul>/<li>list on given data (string|array)\MVC\Strings::cutOff: cuts off a string at given limit, appends a custom string if string to cut off is longer than limit, can purify broken markup string before return\MVC\Strings::highlight_html: returns<code>-encapsulated, highlighted html markup- Smarty modifier
smarty_modifier_gtext: helps instantly translating Strings into other Languages using the PHP Extensiongettext(usage:{'Frontend'|gtext:backend})smarty_modifier_highlight_html: highlights html markup (usage:{'some text'|highlight_html})smarty_modifier_parsedown: renders markdown to markup using parsedown (usage{'# title'|parsedown})smarty_modifier_listArray: creates a markup<ul>/<li>list using\MVC\Strings::ulli(usage:{$aData|listArray})
- a Warning is shown if there is more than one primary module
changed
\Emvicy\Emvicy::update: also tries now to update modules source code viagit pullif available- function
\whereis: returns always string and does not exit runtime; empty if nothing was found. Throws a warning level Exception if requested program was not found - a primary module needs to have the file
.primaryion its root folder - secondary module configs are loaded first; primary module configs are loaded last (before load order was by module name)
- config vars
MVC_MODULE_CURRENT_*=>MVC_MODULE_PRIMARY_* - config var
MVC_LOG_FILE_FOLDER=>MVC_LOG_FILE_DIR - config var
MVC_MODULE_PRIMARY_NAME: auto taken from foldername of module - event
mvc.view.renderString.before: value passed is$sTemplateString(before it was object DTArrayObject) - event
mvc.view.renderString.after: value passed is$sRendered(before it was object DTArrayObject) \MVC\Debug::info&\MVC\Debug::display: return a singleton instance of Debug, allows to chain different debug outputs. Example:Debug::display(__LINE__)::display(__DIR__)::info($GLOBALS['aConfig'])::stop();\MVC\Config::get_MVC_SESSION_NAMESPACE: returns value from its global $aConfig as fallback- Session Behaviour: once a namespace is set via
Session::is('foo')orSession::is()->setNamespace('foo')or\MVC\Config::set_MVC_SESSION_NAMESPACE('foo'), all further session operations are using that namespace until changed again\MVC\Session::setNamespace: writes namespace back to Registry and also global $aConfig via new\MVC\Config::set_MVC_SESSION_NAMESPACE\MVC\Session::kill: update also its config varConfig::set_MVC_SESSION()
\MVC\Debug::infocomes with syntax highlighting and style improvements\MVC\Event::addToRegistry:- event
mvc.controller.init.after: value passed is (bool)$bSuccess(before it was object DTArrayObject) - event
mvc.controller.init.before: no value is passed (before it was an empty object DTArrayObject) - Events are passing given parameter
\MVC\Generator\DataType::createStaticCreator\MVC\Generator\DataType::createConstructorapplication/library/MVC/DataType/DTClass.phpapplication/library/MVC/DataType/DTConfig.phpapplication/library/MVC/DataType/DTConstant.phpapplication/library/MVC/DataType/DTFileinfo.phpapplication/library/MVC/DataType/DTProperty.phpapplication/library/MVC/DataType/DTRequestCurrent.phpapplication/library/MVC/DataType/DTRoute.phpapplication/library/MVC/DataType/DTArrayObject.phpapplication/init/skeleton/Module/DataType/DTRoutingAdditional.phtml
- config var
MVC_LOG_FORCE_LINEBREAK: its default value in skeleton istrue application/library/MVC/Generator/DataType.php: Events in getter passing classvar; https://trello.com/c/sDu24FdEapplication/library/MVC/Generator/DataType.php: Events in setter passing parameter$mValue; https://trello.com/c/cKALAnVjapplication/library/MVC/Generator/DataType.phprename '$aValue' => '$mValue'- InfoToolbar
\MVC\InfoTool::buildMarkupListTree: returns given $aData if not array- Event methods names, styling, highlighting at view templates
- required libraries:
"symfony/var-dumper": "@stable", "symfony/http-kernel": "@stable", "symfony/http-foundation": "@stable", "ext-ctype": "*","ext-curl": "*","ext-date": "*","ext-dom": "*","ext-fileinfo": "*","ext-filter": "*","ext-iconv": "*","ext-intl": "*","ext-json": "*","ext-libxml": "*","ext-mbstring": "*","ext-phar": "*","ext-posix": "*","ext-reflection": "*","ext-session": "*","ext-simplexml": "*","ext-spl": "*","ext-zip": "*","erusev/parsedown":"1.7.*" - Frontend
- bootstrap:
bootstrap-5.3.2-dist(was 4.6.2) - font awesome:
fontawesome-free-6.4.2-web(was 4.7.0) - jquery: 3.7.1 (was 3.7.0)
- favicon
- bootstrap:
deprecated
\MVC\Event::bind: 3rd parameter$oObject\MVC\Config::get_MVC_VIEW_TEMPLATES\Emvicy\Install::recursiveCopy\MVC\Event::getEventArray\MVC\Generator\DataType::createGetDataTypeConfigJSON
removed
- config vars
MVC_MODULE_CURRENT_*: replaced by config varsMVC_MODULE_PRIMARY_* \MVC\DataType\DTArrayObject::getDataTypeConfigJSON\MVC\DataType\DTKeyValue::getDataTypeConfigJSON\MVC\DataType\DTConstant::getDataTypeConfigJSON\MVC\DataType\DTConfig::getDataTypeConfigJSON\MVC\DataType\DTClass::getDataTypeConfigJSON\MVC\Generator\DataType::$iPhpVersion; https://trello.com/c/4uz9wNsf/application/smartyPlugins/insert.myplugin.php\MVC\Config::get_MVC_VIEW_TEMPLATES$aConfig['MVC_VIEW_TEMPLATES']
fixed
- various "problems" (unused Expressions, missing return types, missing statements)
application/library/MVC/DataType/DTRequestCurrent.php: wrong type forprotected $path;
3.3.2
3.3.1
added
application/init/skeleton/Module/_install.sh: update environment\MVC\File::infoincludes mimetype info of file\MVC\File::getMimeTypereturns mimetype of a given file- config var
MVC_LOG_FORCE_LINEBREAK(\MVC\Config::get_MVC_LOG_FORCE_LINEBREAK,\MVC\Config::set_MVC_LOG_FORCE_LINEBREAK): force logging with linebreaks no matter what - in addition to
=,php emvicyis excepting params also separated via:
fixed
application/init/skeleton/Module/_install.sh: wrong path to.envphp emvicy clearcache: deletion of non-empty folder fails on dotfilesphp emvicy.php update: suggests to update root if no composer.json found in module config folder
3.3.0
added
- emvicy command:
php emvicy.php version: prints myMVC version - emvicy command:
php emvicy.php log id={id}: aggregates a unique log extract on STDOUT from all existing logfiles (*.log) on given logId - emvicy command:
php emvicy.php update: updates myMVC Framework and its vendor installed libraries (requires: git installed) - optional 3rd parameter
$bNewlinefor\MVC\Log::write: linebreak true|false; default=true - PSR4 autoloader
- function
whereis()returns absolute path to the requested linux binary if exists - function
pr(), dumps data using print_r - Event
mvc.event.init.after: this is now the earliest event to listen for \MVC\Config::set_MVC_UNIQUE_ID\MVC\Config::get_MVC_APPLICATION_INIT_DIR- config var
MVC_LOG_FILE_EVENT: contains abs path to event logfile - config var
MVC_LOG_FILE_POLICY: contains abs path to policy logfile - config
MVC_LOG_DETAIL: control log details; (\MVC\Config::get_MVC_LOG_DETAIL,\MVC\Config::set_MVC_LOG_DETAIL) - auto-create
/.envfile if missing, settingMVC_ENV=develop \MyMVCInstaller::checkOnModulesInstalled: checking on existing primary module installed\MyMVCInstaller::getEnvironmentOfRequest: returns origin of requesting environment
changed
- config var
MVC_APPLICATION_CONFIG_DIR=>MVC_APPLICATION_INIT_DIR /application/config/=>/application/init/php emvicy create: rename files from *.phtml to *.php using mv command (not usingrenameanymore)- Error|Event|Lock Logs come per default with no linebreaks (replaced by string \n)
- when set a variable via Config class
set_-method, also set its explicitely $GLOBALS equivalent (which is still PHP 8.1.0 ff. compatible) \MVC\Request::setServerVarsForCli: fallback$_SERVER['REMOTE_ADDR']set to0.0.0.0application/library/MVC/InfoTool.php: replacedmb_convert_encoding(deprecated) bymb_encode_numericentity- move
/public/.envto/.env - refactored
application/config/util/bootstrap.php - required:
php >=8.0 MVC_UNIQUE_ID: now as combination ofYmd+uniqid()- infotool: more discreet error message
- default template: link to online documentation; removed pseudo menu entries
- public assets: jquery 3.7.0, bootstrap 4.6.2
removed
\MVC\Config::get_MVC_APPLICATION_CONFIG_DIR()- config var
MVC_BIN_RENAME;\MVC\Config::get_MVC_BIN_RENAME() - using of linux
renamefunction - phpFunctionsRequired
utf8_decode - preloading MVC_CLASSES
- PSR0 autoloader
- Event
mvc.event.init \MVC\Request::sanitize- Event
mvc.controller.construct.after - Event
mvc.route.init - Event
mvc.runTargetClassPreconstruct.after myMVC.phar\MVC\Event::getEventReport\MVC\Event::unbindEmvicy::whereis()- public assets: jquery 3.4.1, bootstrap 4.4.1
fixed
- infoToolbar toggle width detection may be faulty
bootstrap.php, Line: 152, Message: Failed opening required 'Standard/Index.php'on sending a request via cli when there is no moduleEvent.php, Line: 48, Message: RecursiveDirectoryIterator::__construct(/event): Failed to open directoryon sending a request via cli when there is no modulePolicy.php, Line: 37, Message: RecursiveDirectoryIterator::__construct(/policy): Failed to open directoryon sending a request via cli when there is no moduleRoute.php, Line: 41, Message: RecursiveDirectoryIterator::__construct(/routing): Failed to open directoryon sending a request via cli when there is no module
3.2.9
added
emvicy.php: replacement for myMVC.phar
changed
\Event\Index::enableSessionmoved to\Model\Index::enableSessionapplication/library/MVC/Reflex.php: lead Error message to\MVC\Error::errorapplication/config/skeleton: Restructuring
deprecated
myMVC.phar
removed
myMVC.phar: utf8_encodeEventfolder; when generating a new module via myMVC.phar
fixed
myMVC.phar: trim on null- smaller typo fixes
3.2.8
added
application/config/util/bootstrap.php: callingmvcConfigLoader()with parameter$aConfig.
fixed
application/library/MVC/Route.php: E_WARNING (2); Line: 343, 344; Message: Undefined array key X- missing array parameter at
mvcConfigLoader()(application/config/util/functions.php)
3.2.7
added
- new global functions
mvcStoreEnv(),mvcConfigLoader()
changed
application/library/MVC/InfoTool.php: readMVC_ENVvia gettenv()application/config/util/bootstrap.php: usingmvcStoreEnv(),mvcConfigLoader()
fixed
- It can happen that with similarly structured routes which also contain variables, the correct route to the requested path is not determined.
3.2.6
added
\MVC\Strings::uuid4: returns a random uuid Version4 string
changed
- php composer.phar self-update && php composer.phar update; Upgrading to version 2.5.5 (stable channel).
- save errors type of
E_WARNING, E_CORE_WARNING, E_COMPILE_WARNING, E_USER_WARNING=>warning.log - save errors type of
E_NOTICE, E_USER_NOTICE, E_DEPRECATED, E_USER_DEPRECATED=>notice.log
fixed
sTemplateRelativepath may not be displayed in infotool
3.2.5
3.2.4
added
\MVC\Event::delete: former method\MVC\Event::unbindis not accurate, because it does not unbind a closure to an event, but simply deletes the event.\MVC\Controller::runTargetClassPreconstruct: Eventmvc.controller.runTargetClassPreconstruct.afteras replacement formvc.runTargetClassPreconstruct.after\MVC\Controller::init: Eventmvc.controller.init.afteras replacement formvc.controller.construct.after\MVC\Policy::apply: Eventmvc.policy.apply.before:\MVC\Event::RUN('mvc.policy.apply.before', $aPolicy);containing Policies array due to current request\MVC\Policy::unset: Eventmvc.policy.unset.before:\MVC\Event::RUN('mvc.policy.unset.before', $aPolicy);containing Policies array read from Registry\MVC\Policy::unset: Eventmvc.policy.unset.after:\MVC\Event::RUN('mvc.policy.unset.after', $aPolicy);containing Policies array about to save back to Registry\MVC\Policy::set: Eventmvc.policy.set.before:\MVC\Event::RUN('mvc.policy.set.before', $aPolicy);containing Policies array read from Registry\MVC\Policy::set: Eventmvc.policy.set.after:\MVC\Event::RUN('mvc.policy.set.after', $aPolicy);containing Policies array about to save back to Registry\MVC\Policy::init: Eventmvc.policy.init.before\MVC\Policy::init: Eventmvc.policy.init.after\MVC\DataType\DTArrayObject::flatten: returns a simple key/value array of key value pairs stored in current object. notice: it does only use "sKey" and "sValue" of the DTKeyValue Object\MVC\Route::init: Eventmvc.route.init.before\MVC\Route::init: Eventmvc.route.init.after
deprecated
\MVC\Event::unbind; use instead:\MVC\Event::delete- Event
mvc.runTargetClassPreconstruct.after - Event
mvc.runTargetClassPreconstruct.after - Event
mvc.controller.construct.after - Event
mvc.route.init
fixed
\MVC\Strings::seofy: german umlauts do not convert correctly (e.g. ü => ue). Fixed by addingtransliterator_transliterate\MVC\Minify.php: if different files got same content, only the first one found will be minified. Fixed by identify file not only by its content but also by its path.