for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Nip\Utility\Traits;
use Nip\Utility\Oop;
/**
* Trait CanBootTraitsTrait
* @package Nip\Utility\Traits
*/
trait CanBootTraitsTrait
{
protected $bootTraits = null;
protected $bootedTraits = [];
* Initialize any initializable traits on the model.
*
* @return void
public function bootTraits()
$needBooting = array_diff($this->getBootTraits(), $this->bootedTraits);
$this->getBootTraits()
null
array
$array
array_diff()
If this is a false-positive, you can also ignore this issue in your code via the ignore-type annotation
ignore-type
$needBooting = array_diff(/** @scrutinizer ignore-type */ $this->getBootTraits(), $this->bootedTraits);
Nip\Utility\Traits\CanBo...sTrait::getBootTraits()
This check looks for function or method calls that always return null and whose return value is used.
class A { function getObject() { return null; } } $a = new A(); if ($a->getObject()) {
The method getObject() can return nothing but null, so it makes no sense to use the return value.
getObject()
The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.
foreach ($needBooting as $method) {
$this->{$method}();
$this->bootedTraits[] = $method;
}
* @return null
public function getBootTraits()
if ($this->bootTraits === null) {
$this->initBootTraits();
return $this->bootTraits;
* @param null $bootTraits
$bootTraits
public function setBootTraits($bootTraits): void
$this->bootTraits = $bootTraits;
* @return bool
public function hasBootTraits()
return is_array($this->getBootTraits());
protected function initBootTraits()
$this->setBootTraits($this->generateBootTraits());
* @return array
protected function generateBootTraits()
$traitBoots = [];
$class = static::class;
foreach (Oop::uses($class) as $trait) {
$method = 'boot' . Oop::basename($trait);
if (method_exists($class, $method)) {
$traitBoots[] = $method;
return $traitBoots;