diff --git a/packages/collections/pub/eadlist.php b/packages/collections/pub/eadlist.php
index 669a5da..04c0d5b 100644
--- a/packages/collections/pub/eadlist.php
+++ b/packages/collections/pub/eadlist.php
@@ -36,7 +36,7 @@
{
?>
&templateset=ead&disabletheme=1&output='>
-
+ getClosure($mixin);
+ $result = call_user_func($closure->bindTo($this));
}
}
diff --git a/packages/core/lib/archonobject.inc.php b/packages/core/lib/archonobject.inc.php
index e16ddae..caca4b1 100755
--- a/packages/core/lib/archonobject.inc.php
+++ b/packages/core/lib/archonobject.inc.php
@@ -10,20 +10,19 @@ public function callOverridden()
$args = func_get_args();
$MixinClass = prev($methodInfo->Classes);
- $arrStrArgs = array();
-
- for($i = 0; $i < count($args); $i++)
- {
- $arrStrArgs[] = "\$args[{$i}]";
- }
-
// Simulate mixing after.
if($_ARCHON->Mixins[get_class($this)]->Methods[$method]->Parameters[$MixinClass]->MixOrder == MIX_AFTER)
{
$prevresult = call_user_func_array(array($this, 'callOverridden'), $args);
}
- eval("\$result = {$MixinClass}::{$method}(" . implode(',', $arrStrArgs) . ");");
+ $myMixinClass = "___{$MixinClass}___";
+ if (!class_exists($myMixinClass)) {
+ eval("class $myMixinClass extends $MixinClass {}");
+ }
+ $mixin = new $myMixinClass;
+ $closure = (new ReflectionMethod($myMixinClass, $method))->getClosure($mixin);
+ $result = call_user_func_array($closure->bindTo($this), $args);
// Simulate mixing before.
if($_ARCHON->Mixins[get_class($this)]->Methods[$method]->Parameters[$MixinClass]->MixOrder == MIX_BEFORE)
@@ -234,21 +233,20 @@ public function __call($method, $args)
$_ARCHON->Callstack[] = $stackmember;
$MixinClass = end(end($_ARCHON->Callstack)->Classes);
- $arrStrArgs = array();
-
- for($i = 0; $i < count($args); $i++)
- {
- $arrStrArgs[] = "\$args[{$i}]";
- }
-
// Simulate mixing after.
if($_ARCHON->Mixins[get_class($this)]->Methods[$method]->Parameters[$MixinClass]->MixOrder == MIX_AFTER)
{
$prevresult = call_user_func_array(array($this, 'callOverridden'), $args);
}
- eval("\$result = {$MixinClass}::{$method}(" . implode(',', $arrStrArgs) . ");");
//$result = call_user_func_array(array(($MixinClass) $this, $method), $args);
+ $myMixinClass = "___{$MixinClass}___";
+ if (!class_exists($myMixinClass)) {
+ eval("class $myMixinClass extends $MixinClass {}");
+ }
+ $mixin = new $myMixinClass;
+ $closure = (new ReflectionMethod($myMixinClass, $method))->getClosure($mixin);
+ $result = call_user_func_array($closure->bindTo($this), $args);
// Simulate mixing before.
if($_ARCHON->Mixins[get_class($this)]->Methods[$method]->Parameters[$MixinClass]->MixOrder == MIX_BEFORE)
diff --git a/packages/core/lib/querylog.inc.php b/packages/core/lib/querylog.inc.php
index 66c8a43..6930086 100755
--- a/packages/core/lib/querylog.inc.php
+++ b/packages/core/lib/querylog.inc.php
@@ -5,7 +5,7 @@ public function logQuery(&$DB, $Scope, $Message, $IsManip = NULL)
{
$this->QueryCount++;
- if($OutputQueries)
+ if($this->OutputQueries)
{
echo("\n\n$Message\n\n");
}