exakat.1.5.5 review

exakat.1.5.5 Review

exakat.1.5.5是Sinkterklas版本:它从西班牙带来了大量的速度,报告和分析。认真,Exakat 1.5.5现在报告您的HTTP标头以供不安全配置;它还建议加速fputcsv()的技巧,它建议使用 文件()函数,而不是文件得到_contents()。然后,在PHP市的帮助下,exakat将您的代码转变为城市。 HIJ KOMT,HIJ KOMT,Exakat 1.5.5审查。

加速fputcsv()

Fputcsv. 是一种写入文件的本机函数 CSV 格式。它需要一个维数组,并添加分隔符,以及可选的封闭字符。由于它一次只接受一行,因此通常使用这种方式:

   
<?php

// range() accepts letters, but don't abuse them 
// array_chunk split an array into arrays, 3 by 3 
$source = array_chunk(range('a', 'z'), 3);

$fp = fopen('my.csv', 'w+');
foreach($source as $row) {    
   fputcsv($fp, $row);
}
fclose($fp);

?>

这非常方便,但它往往是一个缓慢的过程。 fputcsv()实际上在呼叫时间写下行,导致很多刷新。那些很慢。将所有行批量到一个大文本,然后,将()将()批量批量更快。

手动编写CSV格式并不太难,它不方便。 fputcsv()工作快速和清洁,同时重写阵列中所有元素的正确逃逸是无耻的。将fputcsv()作为formater会很好,从文件指针解耦它需要作为第一个参数。

实际上,这一思想是这个好速度技巧的起源:让’s给fputcsv()文件写入,然后让’s一次使用fwrite()到磁盘。当然,这样的临时文件应该应该’t be on the disk, but in memory. So, we can rely on PHP.://memory or PHP.://temp. Those are special file that fopen() recognizes : the first one creates the file in memory, while the second creates the file in memory until a certain size. By default it is 2 Mb, but it may easily be configured. When using temp, PHP will automatically write the temp file on the disk when it reaches 2 Mb, so this will defeat our own target. So, we stick with memory.

下面是它的工作原理 :

  
<?php

// range() accepts letters, but don't abuse them // array_chunk split an array into arrays, 3 by 3 $source = array_chunk(range('a', 'z'), 3);

$f = fopen('php://memory', 'w+');
foreach($source as $row) {    fputcsv($f, $row);
}
rewind($f); // Important, otherwise we won't write anything $fp = fopen('my.csv', 'w+');
fwrite($fp, $f);
fclose($fp);
fclose($f);

?>

首先,我们打开内存文件,并用fputcsv()写一切。然后,我们倒带文件,并将其倒入一个拍摄到目标文件中。

在磁盘上编写300 000行时,Foreach中的Fputcsv()需要1,192毫秒,而PHP://内存技巧需要308毫秒。这几乎是4倍的加速,磁盘上约为1 MB的数据。

PHP://内存技巧很有趣,因为它将刷新问题转移到内存问题。如果你谨防这个’重新操纵非常大的CSV,因为脚本可能会吃掉所有内存。否则,这种加速度可从最小的阵列开始,因此没有理由避免它!

安全HTTP标题

来自 MDN. web docs :

The HTTP X-XSS-Protection response header is a feature of Internet Explorer, Chrome and Safari that stops pages from loading when they detect reflected cross-site scripting (XSS) attacks.

The Access-Control-Allow-Origin response header indicates whether the response can be shared with requesting code from the given origin.

Both those headers may be emitted from the PHP application, to change the security level. X-XSS-Protection may be set to 0, and Access-Control-Allow-Origin may be set to *, which are unsafe. Anytime headers are identified in the code as doing so, they are now reported.

   
<?php
// Don't disable security restrictions in the code 
header('Access-Control-Allow-Origin: *');
?>

使用_file()函数

Quite a number of PHP function have a _file version, that manipulates a file directly. For example, the hash function.

   
<?php

// calculate the SHA256 of a file 
echo hash_file('sha256', '/path/to/the/file.txt');

?>

Sadly, for those of use who keeps forgetting that file, the alternative is to use the hash function, after reading the file with file_得到_内容();

   
<?php

// calculate the SHA256 of a file 
echo hash('sha256', file_get_contents('/path/to/the/file.txt'));

?>

性能增益不显着,但内存在过程中保存,导致较少的贪婪脚本。

PHP.city报告

将一个新的报告添加到当前列表中:phpcity。它起源于 code city source code visualisation, invented by Richard Wettel.

发现那些大型高层建筑作为你的代码的大而复杂的类

这个想法是将代码源代表为一个城市的建筑物。首先基于命名空间或文件夹,首先收集代码。然后,基于它们的属性数,方法(用于基础)和代码行(对于高度)来表示每个类。颜色也用于表示抽象,最终或接口。

PHP.city. 是阿德里安·彭纳的项目,将这些原则应用于PHP。它是基于的 jscity.并且需要从代码源提取一些数据。

exakat.为PHP市提供指标显示它们。在命令行中,使用此:

> php exakat.phar report -p <yourproject> -format Phpcity 

然后,将脚本上传到 PHP.city演示 然后与您的代码交互。

每周审计:2018,周#48

exakat包括A.‘weekly’报告:此报告采用五项分析为构建。这意味着短暂的审计报告,几乎没有问题审查。读取它们并不是很多,并在代码中查看它们。 PHP社区中的每个人都可以专注于一个经典的编码问题并解决它。谈谈周围的每周审计:你’LL找到面临同样挑战的程序员。

获得‘weekly’审核,运行审计,请求‘Weekly’ report.

\# Init the project (skip when it is already done)   
php exakat.phar init -p <yourproject> -R //github.com/Seldaek/monolog.git -git 

\# Run the project (skip when it is already done)   
php exakat.phar project -p <yourproject> 

\# Export the weekly project (every monday)   
php exakat.phar report -p <yourproject> -format Weekly 

\# Open projects/<yourproject>/weekly/index.html in your browser    

每周,您可以在此找到5个新分析,以便在您的代码中审查。事实上,当您的代码干净时,您也可以快速查看即将到来的

每周 recommendations for PHP code review : 2018, week 2018-48

  • 抛出FunctionCall. : The throw keyword expects to use an exception.
  • 不是这样的 :双重没有制作布尔,而不是真实的。
  • 无效的包格式 :某些字符在Pack()格式字符串中无效。
  • 注射太多了 :当具有超过四个依赖项的类构造时,它应该分成较小的类。
  • 父母第一 : When calling parent constructors, always put it first in the __constructmethod.

每周,您可以在此找到5个新分析,以便在您的代码中审查。事实上,当您的代码干净时,您也可以快速查看即将到来的一周‘Go further’ section.

快乐的PHP代码评论

所有362个分析仪都介绍在文档中,包括obedient__DIR__ Then Slash : __DIR__ 必须与字符串一起耦合‘/’.__DIR__ doesn’t包括最终斜线,因此任何连接’T开始它将看到目录名称已更改。这是一个罕见的错误:7%的应用程序Mishandle___DIR__.

您可以查看图库中的所有exakat报告: exakat画廊.

下载exakat.io,安装它 Docker.,升级它‘exakat.phar升级-u’ and like us on GitHub..