Dateigrösse: 4.71 kb
1<?php class ArrayMap{ public static function anvroutine($aroutine,$vroutine,$array=null,&$reference=null) { if($reference) $array=&$reference; $c=count($array); if(!is_array($array)) return false; if(!is_string($aroutine)||!is_string($vroutine)) return false; $aroutine=str_replace('%key%','$k',str_replace('%placeholder%','$array[$k]',$aroutine)); $vroutine=str_replace('%key%','$k',str_replace('%placeholder%','$array[$k]',$vroutine)); reset($array); $i=0; while(list($k,$v)=each($array)){ if(is_array($array[$k])) { ob_start(); $debug=eval($aroutine); if(ob_get_length()>1) $msg=trim(strip_tags(ob_get_contents())); ob_end_clean(); if(false===$debug){ ob_start(); debug_print_backtrace(); $called_at=ob_get_contents(); ob_end_clean(); $called_at=substr($called_at,strrpos($called_at,'called')); throw new Exception ( PHP_EOL . substr($msg,0,strpos($msg,'eval')). ' in your aroutine '. substr($msg,strrpos($msg,'on')) . PHP_EOL . $called_at. PHP_EOL ); } if(!empty($msg)){ ob_start(); debug_print_backtrace(); $called_at=ob_get_contents(); ob_end_clean(); $called_at=substr($called_at,strrpos($called_at,'called at')); trigger_error ( PHP_EOL . substr($msg,0,strpos($msg,'eval')). ' in your aroutine '. substr($msg,strrpos($msg,'on')) . PHP_EOL . $called_at. PHP_EOL, E_USER_WARNING ); } unset($debug,$msg); if(is_array($array[$k])) foreach($array[$k] as &$vl) { $array[]=&$vl; } unset($vl); unset($debug); unset($msg); unset($called_at); } else { ob_start(); $debug=eval($vroutine); if(ob_get_length()>1) $msg=trim(strip_tags(ob_get_contents())); ob_end_clean(); if(false===$debug){ ob_start(); debug_print_backtrace(); $called_at=ob_get_contents(); ob_end_clean(); $called_at=substr($called_at,strrpos($called_at,'called at')); throw new Exception ( PHP_EOL . substr($msg,0,strpos($msg,'eval')). ' in your vroutine '. substr($msg,strrpos($msg,'on')) . PHP_EOL . $called_at. PHP_EOL ); } if(!empty($msg)){ ob_start(); debug_print_backtrace(); $called_at=ob_get_contents(); ob_end_clean(); $called_at=substr($called_at,strrpos($called_at,'called at')); trigger_error ( PHP_EOL . substr($msg,0,strpos($msg,'eval')). ' in your vroutine '. substr($msg,strrpos($msg,'on')) . PHP_EOL . $called_at. PHP_EOL, E_USER_WARNING ); } unset($debug); unset($msg); unset($called_at); } if($i>=$c) unset($array[$k]); $i++; } return $array; } public static function aroutine($vroutine,$array=null,&$reference=null) { if($reference) $array=&$reference; if(!is_array($array)) return false; if(!is_string($vroutine)) return false; $vroutine=str_replace('%key%','$k',str_replace('%placeholder%','$array[$k]',$vroutine)); reset($array); while(list($k,$v)=each($array)){ ob_start(); $debug=eval($vroutine); if(ob_get_length()>1) $msg=trim(strip_tags(ob_get_contents())); ob_end_clean(); if(false===$debug){ ob_start(); debug_print_backtrace(); $called_at=ob_get_contents(); ob_end_clean(); $called_at=substr($called_at,strrpos($called_at,'called at')); throw new Exception ( PHP_EOL . substr($msg,0,strpos($msg,'eval')). ' in your vroutine '. substr($msg,strrpos($msg,'on')) . PHP_EOL . $called_at. PHP_EOL ); } if(!empty($msg)){ ob_start(); debug_print_backtrace(); $called_at=ob_get_contents(); ob_end_clean(); $called_at=substr($called_at,strrpos($called_at,'called at')); trigger_error ( PHP_EOL . substr($msg,0,strpos($msg,'eval')). ' in your vroutine '. substr($msg,strrpos($msg,'on')) . PHP_EOL . $called_at. PHP_EOL, E_USER_WARNING ); } unset($debug,$msg,$called_at); } return $array; } } ?>