金沙上线.0.12.12 review

金沙上线.0.12.12 review

金沙上线.0.12.12出了。 金沙上线本周增加了一些新分析:支持对EXT / Parle扩展,帮助pathInfo()使用,检查pathInfo()和array_values()。 金沙上线还包括getmessage()进入‘don’t echo error message’, and ‘No concat in a loop’涵盖新情况。欢迎来到Exakat 0.12.12!

Catch子句的echo getMessage()

上周之后’关于Twitter关于错误使用Catch()的讨论,我们升级了‘Don’t echo error message’分析。显示错误消息的任何情况都是安全问题。

<?php
try { 
} catch(Exception $e) {
 echo mysqli_error();
 print socket_last_error();
 exit $e->getMessage();
 // Quite a nest of echo, isn't it? 
}
?>

请注意,除了GetMessage()之外,还可以使用getstack()和getstackasstring()泄漏信息。至于‘error functions’,有大约110个PHP本机函数,可以让您访问错误,如zend_error(),xmlrpc_error(),preg_last_error(),date_get_last_errors()或oci_error()。
这是一个重要的安全错误。虽然它没有’t访问任何恶意派对,它泄漏了很多有趣的信息,通常导致更多地攻击您的代码。尽一切成本避免它们。

PathInfo()使用

pathInfo()是一个辅助本机函数,从路径中提取重要件:文件,扩展名,目录。默认情况下,它会报告可用的一切:

<?php
$path = '/path/to/file.ext';
print_r(pathinfo($path));
?>

显示:
大批
(
[dirname] => /path/to
[basename] => file.ext
[扩展] => ext
[filename] => file
)

较少的知道是第二个参数:您可以提供任何PathInfo_dirname,pathInfo_baseName,pathinfo_extension或pathinfo_filename,并返回一个字符串,而不是数组。这样,写作更有效

<?php
$path = '/path/to/file.ext';
$filename = pathinfo($path, PATHINFO_FILENAME);
?>

<?php
$path = '/path/to/file.ext';
$details = pathinfo($path);
$filename = $details['filename'];
?>

在此之上,PHP仅在返回路径的一个元素时的工作量少,并且第一个呼叫实际上比第二个元素快50%。
只要你’使用第2个参数调用pathInfo()并使用其一个或两个元素更快。一旦使用了3个元素,阵列()版本更适合。

列表()和array_values(pathinfo())

当请求来自pathInfo()的所有值时,它会诱人使用 列表()直接分配它们。

<?php
list($dirname, $basename, $extension, $filename) = array_values(pathinfo($file));

// PHP 7.1 is also possible: 
['dirname' => $dirname, 
 'basename' => $basename, 
 'extension' => $extension, 
 'filename' => $filename] = pathinfo($file);
?>

但是,这种方法具有主要缺点:pathInfo()’T始终返回四个元素:有时,没有扩展名(对于自述文件)。在这种情况下,‘extension’在pathInfo()返回中省略,这导致警告,甚至,错误:$扩展名获取文件名,$ filename为空。

有人可能表明 PathInfo.()可以升级,每次都返回一致的数组。这将是一个解决方案。其他解决方案是检查‘extension’,并相应地设置。此方法,no array_values for pathInfo()的array_values(或php 7.1列表())。

支持EXT / PARSE

Parle实际上是Parser-Lexer扩展,由Anatol Belski写。 Lexer将字符串转换为令牌的Serie,而解析器在令牌的Serie上应用额外的规则以构建更复杂的结构。

例如,Lexer将读取整数,从它们的逗号分隔列表中读取,而解析也将识别实数,则将逗号作为十进制分隔符。

请参阅文档 //github.com/weltling/parle.

快乐的PHP代码评论

所有320多个分析仪都呈现在文档中,包括可见性报告,该报告检查常量,方法和属性的使用,并建议可以在可见性中升级。看到它的行动 PHPMailer.’s 代码在这里。下载金沙上线 金沙上线.io.,升级它‘金沙上线.phar升级-u’像我们在Github上一样: //github.com/金沙上线/金沙上线.