From: Roland Häder Date: Tue, 30 May 2017 13:03:48 +0000 (+0200) Subject: added call-back instance support X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=85473748235f6086452bd2eae00af1c868041ad0;p=core.git added call-back instance support Signed-off-by: Roland Häder --- diff --git a/framework/main/classes/lists/class_BaseList.php b/framework/main/classes/lists/class_BaseList.php index df6e7c08..5111b8d1 100644 --- a/framework/main/classes/lists/class_BaseList.php +++ b/framework/main/classes/lists/class_BaseList.php @@ -40,6 +40,11 @@ class BaseList extends BaseFrameworkSystem implements IteratorAggregate, Countab const EXCEPTION_GROUP_NOT_FOUND = 0xf21; const EXCEPTION_INVALID_HASH = 0xf22; + /** + * Call-back instance + */ + private $callbackInstance = NULL; + /** * List groups array */ @@ -66,6 +71,16 @@ class BaseList extends BaseFrameworkSystem implements IteratorAggregate, Countab parent::__construct($className); } + /** + * 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 iterator instance from this list * @@ -308,6 +323,9 @@ class BaseList extends BaseFrameworkSystem implements IteratorAggregate, Countab } elseif ((is_array($entry)) && (isset($entry['id']))) { // Supported array found $entry2 = crc32($entry['id']) . ':' . count($entry); + } elseif (($this->callbackInstance instanceof FrameworkInterface) && (is_callable(array($this->callbackInstance, 'generateListHashFromEntry')))) { + // Call it instead + $entry2 = $this->callbackInstance->generateListHashFromEntry($entry); } else { // Unsupported type detected self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('BASE-LIST[' . __METHOD__ . ':' . __LINE__ . ']: Entry type ' . gettype($entry) . ' is unsupported.');