Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
8 / 8
WithAssignedField
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
8 / 8
 assign
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
8 / 8
<?php
namespace Verja;
trait WithAssignedField
{
    /** @var Field */
    protected $field;
    /**
     * Assign $this to $field
     *
     * Clones $this when already assigned.
     *
     * @param Field $field
     * @return $this
     */
    public function assign(Field $field)
    {
        if ($this->field !== null && $this->field !== $field) {
            // already assigned - clone me and assign $field to the clone
            $myField = $this->field;
            $this->field = null;
            $clone = clone $this;
            $this->field = $myField;
            return $clone->assign($field);
        }
        $this->field = $field;
        return $this;
    }
}