使您的PHP课程中的所有内容

在课堂上使一切私有化是一个很好的建议:常量,方法,属性。使用私人,对元素进行更严格的控制:从外面的任何人都可以使用它,限制对象的不需要的影响。当然,必须从外部访问一些类,或者只能被操纵为令牌。

PHP有 三级可见性 :私人,受保护和公众。它们适用于属性,方法和常数。自PHP 7.1以来,可能会宣布私人。在此之前,它们总是公开,就像没有明确配置的属性或方法一样。

默认情况下Public会使编码更轻松:只要对象可用,就可以调查它,检查或调整值,调用任何方法以进行运行。在开发时,特别是当受孕弱时,这可以防止数据可用的令人沮丧的情况,但隐藏在课程中或错误的某处。

最终,当代码成熟时,期望应用上述封装原理。这有助于使代码清洁并由独立组件进行。这是长期狩猎的开始。

保护方法可以在继承类别中使用。有时候,这些是几个,有时候,而不是。公共场所突然是猎灵狩猎的噩梦:它们可能会在几百万行代码中使用任何地方。

exakat.visibility report

这是exakat可见性报告有助于帮助。它实际上跟踪了常量,属性和方法的所有使用,并为每个概述提供概述。可见性报告可用‘Audit logs’大使报告的一部分。

常数

班常数 是将产生最多结果的人:因为该功能是非常近来的,非常小的PHP代码正在利用它们。他们中的大多数仍然是‘none’,这是公众的。绿色恒星在此意味着常数未标记,并且它是最佳的可见性:此常数也用于‘public’情况。使能见度保护或私人将打破代码。

方法

报道了方法,还有一些色彩缤纷的星星:绿色仍然是最好的选择。卖家()方法可能是一个‘protected’方法,虽然目前宣布‘public’。私有列中没有明星意味着不可能实现此选项:该方法由子类使用。因此,升级了对保护的可见性使得代码更好,仍在工作。

目前缺少静态运行函数缺少可见性,并且也可以升级到受保护。

特性

属性就像常量和方法一样:绿色是最佳可用,如果它不是最佳选择,则使用红色/橙色颜色。在这里,$卖家(财产)可能会升级到私有,因为它似乎没有其他类是直接使用它:鉴于以前的观察,似乎其他类使用exclers()(方法)访问它。这将是在代码中强制执行的可见性的经典示例,但未明确指定。

属性默认值

属性有A.‘value’列,提到当前默认值。建议始终设置默认值。甚至‘null’帮助读者了解在代码中的某个点应该初始化此属性。在这里,$ Gateway可能是通信设备和一个对象。

属性可能是常数

最后,最后一列也是该属性的可能升级。它提到了从未写入的属性,只用于阅读。它们可以设置在课程定义时间,然后,再也不会改变了。

<?php
Class foo{
   private $tmpDir = '/tmp/private';

   function log($message) {
    // $tmpDir is read but not modified.
    $fp = fopen($this→tmpDir.'/mylog.log', 'a');
    fwrite($fp, $message.PHP_EOL) ;
    fclose($fp) ;
   }
}
?>

这种情况发生在几个情况下:

  • 属性保存一个数组,并且仅在PHP 5.4以来的常量中允许数组。这基本上是一种可能现代化的传统习惯。
  • 此属性最初是动态的,但最终作为代码成熟的文字回归。
  • 该属性用于字符串(“$this->tmpDir/mylog.log”),恒定不方便。
  • 构建类时的第一选择是属性,而不是常量。

在任何情况下,常量可能是考虑这里的选择。永不修改的属性实际上是恒定的,因此建议使它们出现。这将防止未来的痛苦,当物业实际上无意中修改时。

用大脑更新您的代码

可见性报告非常适合应用合理的编码标准。它是在现有代码上构建的,并且可以报告具有几种情况的极端关闭。

  • 某些代码使用动态访问该类,并且没有报告这一点。
  • 代码是库。它将在其他存储库中使用’代码,这解释了为什么这么多方法是‘unused’。在提高可见性之前仔细思考。
  • 代码正在升级,并且某些属性已用于即将升级的升级。这实际上是一个有效的借口,因为未来的进化在代码中不可见,或者它们是代码。这也是一个常绿借口:它适用于过去,现在和未来的每一行。

结论

可见性报告 提供课程和他们的课程概述 可见性配置。可以衡量忽视的情况,从提高的可见性中受益,非常有效:对当前类的意外影响更少,更加解耦的代码和原子组件。
有时,它也提出了问题。例如,当没有建议提高财产时‘private’,虽然它应该仅被课堂使用。这意味着一些剩余的代码已经以公共或受保护的方式利用它。现在值得进一步调查。