2015-06-19 2 views
1

Я хотел бы спросить, могу ли я потребовать/включить файл с синтаксическими ошибками, и если я не могу, require/include возвращает значение, чтобы я знал, что требуемый/включенный файл имеет синтаксис ошибки и не могут быть требуемыми/включены?Включить, потребовать файл с синтаксической ошибкой

file.php имеет синтаксическую ошибку

include('file.php') 
if (not file.php included because of syntax) 
    this 
else 
    that 

ответ

3

Если вы действительно хотите этого типа функциональности.

Вы можете попробовать использовать nikics php parser, чтобы узнать, можете ли вы успешно проанализировать файл или нет.

$code = file_get_contents('yourFile.php'); 

$parser = new PhpParser\Parser(new PhpParser\Lexer\Emulative); 

try { 
    $stmts = $parser->parse($code); 
    // $stmts is an array of statement nodes 
    // file can be successfully included! 
} catch (PhpParser\Error $e) { 
    // cannot parse file! 
    echo 'Parse Error: ', $e->getMessage(); 
} 
-1

вы можете использовать что-то IKE это:

if((@include $filename) === false) 
{ 
    // handle error 
} else { //....} 

@ используется, чтобы скрыть сообщение об ошибке,

+0

Это будет скрывать ошибки включают себя. Оп спросите о синтаксических ошибках. – Federkun

+0

@Leggendario, если это вопрос, тогда вопрос не имеет смысла. PHP не проверяет такую ​​ошибку до включения. Сначала он включает файл, затем читает его (иначе будет невозможно, верно?) – FeedTheWeb

+0

, если включенный файл имеет синтаксические ошибки, выполнение останавливается даже с подавителем ошибок. ничего из этого будет работать. – castis

0

В PHP 7 Разбор ошибок могут быть перехвачены, что делает это, вероятно, самый надежный, элегантный, встроенное решение:

<?php 

function safe_require_once(string $fname) { 
    try { 
     require_once($fname); 
    } catch(Throwable $e) { 
     //will throw a warning, continuing execution... 
     trigger_error("safe_require_once() error '$e'", E_USER_WARNING); 
    } 
} 

safe_require_once("./test1.php"); //file with parse or runtime errors 
echo "COMPLETED SUCCESSFULLY THO"; 
Смежные вопросы