Quelltext der Datei: http://www.michaelster.ch/jsTestFolder/array_map/ArrayMap.php

Dateigrösse: 4.71 kb

[Anzeige ohne Zeilennummern]


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;
        }


}
?>