for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Koch\Casters\Behavior;
use Koch\Casters\Contracts\Caster;
trait Castable
{
/**
* Casts either a collection or a single model.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param \Koch\Casters\Contracts\Caster|null $caster
* @return array
*/
public function scopeCast($query, Caster $caster = null)
$caster = $caster ?: $this->findCaster();
if ($this->exists) {
exists
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;
return $caster->cast($this);
}
return $caster->cast($query->get());
* Resolves the caster name and returns its instance.
* @return \Koch\Casters\Contracts\Caster
protected function findCaster()
if (property_exists($this, 'caster')) {
return new $this->caster;
caster
$name = 'App\\Casters\\'.class_basename($this).'Caster';
return new $name;
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: