Just nu i M3-nätverket
Gå till innehåll

hur hanterar man fel och visar de på bästa sätt


mac3

Rekommendera Poster

Hejsan alla 

jag har gjort nästa klart mitt nya mvc. 
som är kvar på mitt mvc, är hantering av fel.

från början vill jag göra en  "php check  syntaxen före inkludering"
men jag har inte hitta nånting som gör det , mitt mål var att hoppa över den  inkludering av fil och fortsätta köra koden ändå och ge kodare några val som visa minimal text eller tystläge betyder att mvc spara en log fil eller fulläge som ge allt om körningen   

 

mitt mvc lite speciellt det är att den  inkluderar alla controller och sedan använder mitt mvc ett kod schema. det innebär att den koden som man skriver körs inte där den är skriven och den körs efter ordning som schema mvc har byggt upp automatiskt. 

 

det gör att man kan skriva över en del av koden eller lägga till etc 

 

hur gör jag när man få ett php fel.

och hanterar man fel och visar de på bästa sätt.

 

Länk till kommentar
Dela på andra webbplatser

Hejsan alla 

jag har gjort nästa klart mitt nya mvc. 

som är kvar på mitt mvc, är hantering av fel.

från början vill jag göra en  "php check  syntaxen före inkludering"

men jag har inte hitta nånting som gör det , mitt mål var att hoppa över den  inkludering av fil och fortsätta köra koden ändå och ge kodare några val som visa minimal text eller tystläge betyder att mvc spara en log fil eller fulläge som ge allt om körningen   

 

mitt mvc lite speciellt det är att den  inkluderar alla controller och sedan använder mitt mvc ett kod schema. det innebär att den koden som man skriver körs inte där den är skriven och den körs efter ordning som schema mvc har byggt upp automatiskt. 

 

det gör att man kan skriva över en del av koden eller lägga till etc 

 

hur gör jag när man få ett php fel.

och hanterar man fel och visar de på bästa sätt.

 

 

jag hittade en sätt till min lösning

  function __construct(){
   
      s('before')->load(function(){

	 if(!ob_get_level()){
	    ob_start('ob_gzhandler');
	    ob_start();
	  }
	 
	 s()->setArr('header',header('Vary: Accept-Encoding'));
	 s()->setArr('header',header('Content-Type: text/html; charset=utf-8'));
      });
      
      s('after')->load(function(){

	 if(!headers_sent()){
	    foreach(s()->get('header') as $line){
	      $line;
	    }
	 }
	 $content = ob_get_contents();
		
	 if(ob_get_level()) {
	      ob_end_clean();
	 }
			
	print $content;
    
      });
      
  
      action('autoload(0)');
      
      s('autoload(0)->list(0)')->load(function(){
	 s()->setArr('autoload.list',array(
	    'path' => $_SERVER['DOCUMENT_ROOT'].$_SERVER['HTTP_path_dll'].'%s.php',
	    'msg' => "Kunde inte ladda %s klassen.",
	    'type' => "dll"
	 ));
      });
      
      s('autoload(0)->list(1)')->load(function(){
	 s()->setArr('autoload.list',array(
	     'path' => $_SERVER['DOCUMENT_ROOT'].$_SERVER['HTTP_path_sys'].'%s.php',
	     'msg' => "Kunde inte ladda system klassen %s.",
	     'type' => "sys"
	  ));
      });
      
      s('autoload(0)->list(after)')->load(function(){
	 spl_autoload_register(function($name){
	 $uname = ucfirst($name);

	    foreach(s()->get('autoload.list') as $line){
	       if(file_exists(str_replace('%s',$uname,$line['path']))){
		  include_once(str_replace('%s',$uname,$line['path']));
		  if(class_exists($uname, false)){
			config::registry($uname,$line['type']);     
		  }else{
		     
			// throw new SystemException($line['msg'],$uname);
		  }
	       }
	    }
	  
	 });

      });
      
      action('init(0)');
	  
      s('init(0)->sys(0)')->load(function(){
	 action('sys(1)');
      });
	  
      s('sys(1)->Config(0)')->load(function(){
	 include_once($_SERVER['DOCUMENT_ROOT'].$_SERVER['HTTP_path_config']."config.class.php");
      });
      
      s('sys(1)->Session(0)')->load(function(){
	 session::start();		
      });
      
      s('sys(1)->loadControllers(0)')->load(function(){
        $filer = s::loadControllers($_SERVER["DOCUMENT_ROOT"].$_SERVER['HTTP_path_site']."{*/,*.class.php}");
	$filer = s::sortbyfiles($filer);
	
	if(key_exists('files',$filer)){
	 s::geturls($filer['files']);
	}
	
     });

   }
   
      public static function loadControllers($pattern){
      	
	$files = glob($pattern,GLOB_BRACE);
	    foreach ($files as $k => $dir){
	       if(!is_file($dir)){
       
		       $files = array_merge($files, self::loadControllers($dir."{*/,*.class.php}"));
				   
	       }
	    }
	return $files;
   }
   
   private static function sortbyfiles(array $files){
      $file = array();
      foreach ($files as $k => $dir){
	      if(!is_file($dir)){
	      $file['dirs'][] = $dir;
	      }else{
	      $file['files'][] = $dir;	
	      }
      }
      return $file;
		
   }

     private static function CheckSyntax($fileName){
  
        // Get the shell output from the syntax check command
        $output = shell_exec('php -l "'.$fileName.'"');
        
        // Try to find the parse error text and chop it off
        $syntaxError = preg_replace("/Errors parsing.*$/", "", $output, -1, $count);
        
        // If the error text above was matched, throw an exception containing the syntax error
        if($count > 0){
          //  trim($syntaxError);
	    return false;
	 }else{
	    return true;
	 }
    }	
	
   private static function geturls($files){
      
      foreach($files as $file){
	 if(self::CheckSyntax($file)){
	     include_once($file);	
	 }
      }
   }
 

nu är visa felet :P

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...