for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace LaTevaWeb\CustomProperties;
use Illuminate\Support\Arr;
trait HasCustomProperties
{
public function __construct(array $attributes = [])
parent::__construct($attributes);
$this->casts['custom_properties'] = 'array';
casts
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
}
public function forgetCustomProperty(string $name): self
$customProperties = $this->custom_properties;
custom_properties
Arr::forget($customProperties, $name);
$this->custom_properties = $customProperties;
return $this;
/**
* Get the value of custom property with the given name.
*
* @param string $propertyName
* @param mixed $default
* @return mixed
*/
public function getCustomProperty(string $propertyName, $default = null)
return Arr::get($this->custom_properties, $propertyName, $default);
/*
* Determine if the model item has a custom property with the given name.
public function hasCustomProperty(string $propertyName): bool
return Arr::has($this->custom_properties, $propertyName);
* @param string $name
* @param mixed $value
* @return $this
public function setCustomProperty(string $name, $value): self
Arr::set($customProperties, $name, $value);
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: