exakat.0.12.3 review

exakat.0.12.3评论:PHP 7.2支持,GraphQL实验

exakat.0.12.3就像一个炎热的夏季晚餐。本周’S菜单,我们是在分组使用中的新PHP 7.2语法的支持,2分析默认值和Typehint不匹配,以及开始使用空对象模式的建议。凭借的,exakat现在还在GraphQL格式中提供数据 Marmelab. 。并且,像往常一样,更多的是图表数据库的工作。

PHP 7.2新分组使用语法

PHP 7提供分组的使用语法,其中可以为几种使用表达式提供后缀。

<php
use a\b\c\{ d, e, f};
// equivalent to 
use a\b\c\d, a\b\c\e, a\b\c\f;
?>

PHP 7.2引入添加最后一个逗号的可能性,而无需指定最终命名空间。这与数组定义中的最后一个逗号相当。

<?php
use a\b\c\{ d, e, f, };
$a = array(1,2,3,4,);
?>

此新语法的主要优点是将代码提交给VCS时。版本控制喜欢生成Diff,并且当列表的最后一个元素实际上不同时,它就会不方便。

<?php
use a\b\c\{ d, 
	      e, 
                  f, 
// new use : g,
};
?>

添加一个新的‘g’到上面的分组使用意味着只添加一行(g,)而不是修复前一行并添加新的(,g)。这有助于保持差异较小,更容易读取。

默认值和typehint不匹配

exakat现在报告方法和typehint不匹配。例如 :

<?php
function foo(A $a, B $b) {
	bar($a, $b);
}
function bar(AA $a, $b) { }
?>

在这里,$ a是foo()中的类的实例,但是是函数栏中AA的实例()。虽然可以具有AA的父类别,但是差异导致错误。因此,随时使用方法,功能或闭包正在调用另一种具有不匹配类型的方法,现在报告。请注意,在此分析中省略了未默认的参数,调用或调用。
这同样适用于默认值,但报告比前一个报告更少引人注目。

<?php
function foo($a = null, $b) {
	bar($a, $b);
}
function bar($a = array(), $b) { }
?>

这次,Foo()可以充当栏的参数化功能,并根据目的更改值。虽然大多数时候,他们必须保持一致实际上是有用的。

null对象模式

null对象模式建议创建一个表现类似于null的对象,而没有与null相关的致命错误。例如,在此代码中:

<?php
class x {
	public $foo = null;

	function foo($string) {
		if ($this-&gt;foo !== null) {
			$this-&gt;foo-&gt;display($string);
		}
	}
}
?>

$ this的默认值 - >foo是null。这导致检查$的内容 - >Foo每次必须使用,以便知道是否必须调用回声或显示。
NULL对象应该通过提供始终存在的FOO值来帮助上述代码。

<?php
class x {
	public $foo = null;
	function __construct() {
		$this-&gt;foo = new nullDisplay();
	}
	function foo($string) {
		$this-&gt;foo-&gt;display($string);
	}
}
interface myDisplay {
	function display($string) ;
}
class nullDisplay implements myDisplay{
	function display($string) {} // empty on purpose
	// other methods if needed.
}
?>

现在,不再需要检查$吗?>foo是一个对象(除了公众的事实,它可能是错误的)。 nulldisplay处理在没有提供显示方法的情况下处理,并且表现类似于正常的显示类,但无需无效。
通过提供一致的值,空对象模式倾向于减少对属性的检查量。该分析侧重于查找具有双重性的属性,如标量或对象,并将其作为空对象模式的良好候选者报告。

exakat的graphql.

GraphQL. 是API的最新炒作。它似乎是发布exakat的好方法’结果。目前,我们提供了一个报告的问题数据库,可以通过报告来导航:HTML,JSON,XML,文本等。
涉及特定查询时,当前解决方案是在SQL中写入,并构建一个新报告。尚未记录其中,所以如果您有兴趣,您仍然必须等待或平行团队。

GraphQL. 是一个用于服务数据的查询语言和服务器。上周, 佛朗西斯Zaninotto. released a ‘ 完全假GraphQL API ‘:GraphQL服务器,以了解新语言。它适用于exakat生成的json文件。启动后,我们可以使用GraphQL客户端,如GraphIQL或命令行查询服务器。

php exakat.phar report -p -format Marmelab -file marmelab
cp projects/myproject/marmelab.json path/to/marmelab
json-graphql-server db.json

从那里,您可以查询localhost:3000或使用 graphiql. to build a query.

此刻,在Marmelab.json文件中提供了问题,以及分析仪文档。我们’LL遵循服务器的下一个版本以跟上新功能。
同时,随时可以尝试并让我们更新。 Marmelab GraphQL服务器快速设置和运行,完美的测试。向exakat添加GraphQL支持也应该开辟新的机会,以提取审计报告所需的信息。如果您需要更多,请通过Twitter加入我们,我们’我很高兴收到你的来信!

图表数据库:tinkergraph和Janusgraph

图表数据库地面工作很好。到目前为止,已经添加了Tinkergraph和Janus,他们提供了性能和易于安装的重要提升。我们现在正在升高架构,以打破图表中的五百万令牌,所以保持关注下一个版本!

快乐的PHP代码评论

exakat.0.12.3提供更好的PHP 7.2支持和GraphQL实验。我们还收到了建议 sk Marcus Bointon. ( PHPMailer. ):非常感谢他们!夏季时间是一个伟大的时刻,更好地看看你的代码:为什么不是exakat审计?安装它,运行它并告诉我们它!
所有310多个分析仪都介绍在文档中,包括PHP 7.0‘无需尝试‘,其中报告使用随机数生成函数而无需尝试/ catch块。下载exakat on exakat.io,升级它‘exakat.phar升级-u’像我们在Github上一样: //github.com/exakat/exakat.