X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Fclass_BaseFrameworkSystem.php;h=2d9aa984a4c0102d7cc91596fb616e1abddcd56d;hp=8338268ff423f14287cf0cd6825ac2de87687ce2;hb=974964e500f24aa7695dc4ec555dc659f78e40e8;hpb=257b52af86eb3bbf4bc4cde64d1adca4ce638d0a
diff --git a/framework/main/classes/class_BaseFrameworkSystem.php b/framework/main/classes/class_BaseFrameworkSystem.php
index 8338268f..2d9aa984 100644
--- a/framework/main/classes/class_BaseFrameworkSystem.php
+++ b/framework/main/classes/class_BaseFrameworkSystem.php
@@ -14,6 +14,7 @@ use CoreFramework\Criteria\Local\LocalUpdateCriteria;
use CoreFramework\Crypto\Cryptable;
use CoreFramework\Crypto\RandomNumber\RandomNumberGenerator;
use CoreFramework\Database\Frontend\DatabaseWrapper;
+use CoreFramework\EntryPoint\ApplicationEntryPoint;
use CoreFramework\Factory\Database\Wrapper\DatabaseWrapperFactory;
use CoreFramework\Factory\ObjectFactory;
use CoreFramework\Filesystem\Block;
@@ -25,6 +26,7 @@ use CoreFramework\Generic\NullPointerException;
use CoreFramework\Generic\UnsupportedOperationException;
use CoreFramework\Handler\Handleable;
use CoreFramework\Handler\Stream\IoHandler;
+use CoreFramework\Helper\Helper;
use CoreFramework\Index\Indexable;
use CoreFramework\Lists\Listable;
use CoreFramework\Loader\ClassLoader;
@@ -39,7 +41,9 @@ use CoreFramework\Result\Database\CachedDatabaseResult;
use CoreFramework\Result\Search\SearchableResult;
use CoreFramework\Stacker\Stackable;
use CoreFramework\State\Stateable;
+use CoreFramework\Stream\Input\InputStream;
use CoreFramework\Stream\Output\OutputStreamer;
+use CoreFramework\Stream\Output\OutputStream;
use CoreFramework\Template\CompileableTemplate;
use CoreFramework\User\ManageableAccount;
use CoreFramework\Visitor\Visitor;
@@ -48,6 +52,7 @@ use CoreFramework\Visitor\Visitor;
use \stdClass;
use \Iterator;
use \ReflectionClass;
+use \SplFileInfo;
/**
* The simulator system class is the super class of all other classes. This
@@ -253,6 +258,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
*/
private $stateInstance = NULL;
+ /**
+ * Registry instance (implementing Register)
+ */
+ private $registryInstance = NULL;
+
+ /**
+ * Call-back instance
+ */
+ private $callbackInstance = NULL;
+
/**
* Thousands separator
*/
@@ -1523,6 +1538,44 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
return $this->outputInstance;
}
+ /**
+ * Setter for registry instance
+ *
+ * @param $registryInstance An instance of a Register class
+ * @return void
+ */
+ protected final function setRegistryInstance (Register $registryInstance) {
+ $this->registryInstance = $registryInstance;
+ }
+
+ /**
+ * Getter for registry instance
+ *
+ * @return $registryInstance The debug registry instance
+ */
+ public final function getRegistryInstance () {
+ return $this->registryInstance;
+ }
+
+ /**
+ * Setter for call-back instance
+ *
+ * @param $callbackInstance An instance of a FrameworkInterface class
+ * @return void
+ */
+ public final function setCallbackInstance (FrameworkInterface $callbackInstance) {
+ $this->callbackInstance = $callbackInstance;
+ }
+
+ /**
+ * Getter for call-back instance
+ *
+ * @return $callbackInstance An instance of a FrameworkInterface class
+ */
+ protected final function getCallbackInstance () {
+ return $this->callbackInstance;
+ }
+
/**
* Setter for command name
*
@@ -1682,7 +1735,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
// Is a message set?
if (!empty($message)) {
// Construct message
- $content = sprintf('
Message: %s
' . PHP_EOL, $message);
+ $content = sprintf('
+ Message: %s
+
' . PHP_EOL, $message);
} // END - if
// Generate the output
@@ -1695,7 +1750,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
);
// Output it
- ApplicationEntryPoint::app_exit(sprintf('%s
Loaded includes: %s
',
+ ApplicationEntryPoint::exitApplication(sprintf('
+
+ %s
+
+Loaded includes:
+
+ %s
+
',
$this->__toString(),
$content,
ClassLoader::getSelfInstance()->getPrintableIncludeList()
@@ -1728,19 +1792,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
* @return void
*/
protected function partialStub ($message = '') {
- // Get the backtrace
- $backtrace = debug_backtrace();
-
- // Generate the class::method string
- $methodName = 'UnknownClass->unknownMethod';
- if ((isset($backtrace[1]['class'])) && (isset($backtrace[1]['function']))) {
- $methodName = $backtrace[1]['class'] . '->' . $backtrace[1]['function'];
- } // END - if
-
- // Construct the full message
- $stubMessage = sprintf('[%s]: Partial stub!',
- $methodName
- );
+ // Init variable
+ $stubMessage = 'Partial Stub!';
// Is the extra message given?
if (!empty($message)) {
@@ -1809,11 +1862,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
// Empty string should be ignored and used for testing the middleware
DebugMiddleware::getSelfInstance()->output('');
- // Set it in its own class. This will set it in the registry
- $debugInstance->setDebugInstance($debugInstance);
+ // Set it in registry
+ Registry::getRegistry()->addInstance('debug', $debugInstance);
} else {
// Get instance from registry
- $debugInstance = Registry::getRegistry()->getDebugInstance();
+ $debugInstance = Registry::getRegistry()->getInstance('debug');
}
// Return it
@@ -1845,6 +1898,28 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
// Set debug instance to NULL
$debugInstance = NULL;
+ // Get backtrace
+ $backtrace = debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT);
+
+ // Is function partialStub/__callStatic ?
+ if (in_array($backtrace[1]['function'], array('partialStub', '__call', '__callStatic'))) {
+ // Prepend class::function:line from 3rd element
+ $message = sprintf('[%s::%s:%d]: %s',
+ $backtrace[2]['class'],
+ $backtrace[2]['function'],
+ (isset($backtrace[2]['line']) ? $backtrace[2]['line'] : '0'),
+ $message
+ );
+ } else {
+ // Prepend class::function:line from 2nd element
+ $message = sprintf('[%s::%s:%d]: %s',
+ $backtrace[1]['class'],
+ $backtrace[1]['function'],
+ (isset($backtrace[1]['line']) ? $backtrace[1]['line'] : '0'),
+ $message
+ );
+ }
+
// Try it:
try {
// Get debug instance
@@ -1908,8 +1983,22 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
*
* @param $str The string with maybe dashes inside
* @return $str The converted string with no dashed, but underscores
- */
- public static final function convertDashesToUnderscores ($str) {
+ * @throws NullPointerException If $str is null
+ * @throws InvalidArgumentException If $str is empty
+ */
+ public static function convertDashesToUnderscores ($str) {
+ // Is it null?
+ if (is_null($str)) {
+ // Throw NPE
+ throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+ } elseif (!is_string($str)) {
+ // Entry is empty
+ throw new InvalidArgumentException(sprintf('str[]=%s is not a string', gettype($str)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+ } elseif ((is_string($str)) && (empty($str))) {
+ // Entry is empty
+ throw new InvalidArgumentException('str is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+ }
+
// Convert them all
$str = str_replace('-', '_', $str);
@@ -3203,32 +3292,32 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
* Creates a full-qualified file name (FQFN) for given file name by adding
* a configured temporary file path to it.
*
- * @param $fileName Name for temporary file
- * @return $fqfn Full-qualified file name
+ * @param $infoInstance An instance of a SplFileInfo class
+ * @return $tempInstance An instance of a SplFileInfo class (temporary file)
* @throw PathWriteProtectedException If the path in 'temp_file_path' is write-protected
* @throws FileIoException If the file cannot be written
*/
- protected static function createTempPathForFile ($fileName) {
+ protected static function createTempPathForFile (SplFileInfo $infoInstance) {
// Get config entry
$basePath = FrameworkConfiguration::getSelfInstance()->getConfigEntry('temp_file_path');
// Is the path writeable?
if (!is_writable($basePath)) {
// Path is write-protected
- throw new PathWriteProtectedException($fileName, self::EXCEPTION_PATH_CANNOT_BE_WRITTEN);
+ throw new PathWriteProtectedException($infoInstance, self::EXCEPTION_PATH_CANNOT_BE_WRITTEN);
} // END - if
// Add it
- $fqfn = $basePath . '/' . $fileName;
+ $tempInstance = new SplFileInfo($basePath . DIRECTORY_SEPARATOR . $infoInstance->getBasename());
// Is it reachable?
- if (!FrameworkBootstrap::isReachableFilePath($fqfn)) {
+ if (!FrameworkBootstrap::isReachableFilePath($tempInstance)) {
// Not reachable
- throw new FileIoException($fqfn, self::EXCEPTION_FILE_NOT_REACHABLE);
+ throw new FileIoException($tempInstance, self::EXCEPTION_FILE_NOT_REACHABLE);
} // END - if
// Return it
- return $fqfn;
+ return $tempInstance;
}
/**