for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types = 1);
namespace drupol\valuewrapper\Object;
use drupol\valuewrapper\AbstractValue;
use drupol\valuewrapper\Contract\Hashable;
use drupol\valuewrapper\ValueInterface;
/**
* Class ObjectValue
*/
abstract class ObjectValue extends AbstractValue implements ObjectValueInterface
{
* {@inheritdoc}
public function hash(): string
if ($this->value() instanceof Hashable) {
return $this->doHash($this->value()->hash());
}
return $this->doHash(\spl_object_hash($this->value()));
protected function doHash(string $string) : string
return parent::doHash($this->type() . $this->class() . $string);
public function equals(ValueInterface $item, $strict = true): bool
return $this->hash() == $item->hash();
public function class(): string
return \get_class($this->value());
$this
The PSR-2 coding standard requires that all properties in a class have their visibility explicitly declared. If you declare a property using
class A { var $property; }
the property is implicitly global.
To learn more about the PSR-2, please see the PHP-FIG site on the PSR-2.
public function type(): string
return 'object';