DB\Jig\Mapper::erase PHP Méthode

erase() public méthode

Delete current record
public erase ( $filter = NULL ) : boolean
$filter array
Résultat boolean
    function erase($filter = NULL)
    {
        $db = $this->db;
        $now = microtime(TRUE);
        $data =& $db->read($this->file);
        $pkey = ['_id' => $this->id];
        if ($filter) {
            foreach ($this->find($filter, NULL, FALSE) as $mapper) {
                if (!$mapper->erase()) {
                    return FALSE;
                }
            }
            return TRUE;
        } elseif (isset($this->id)) {
            unset($data[$this->id]);
            parent::erase();
        } else {
            return FALSE;
        }
        if (isset($this->trigger['beforeerase']) && \Base::instance()->call($this->trigger['beforeerase'], [$this, $pkey]) === FALSE) {
            return FALSE;
        }
        $db->write($this->file, $data);
        if ($filter) {
            $args = isset($filter[1]) && is_array($filter[1]) ? $filter[1] : array_slice($filter, 1, NULL, TRUE);
            $args = is_array($args) ? $args : [1 => $args];
            foreach ($args as $key => $val) {
                $vals[] = \Base::instance()->stringify(is_array($val) ? $val[0] : $val);
                $keys[] = '/' . (is_numeric($key) ? '\\?' : preg_quote($key)) . '/';
            }
        }
        $db->jot('(' . sprintf('%.1f', 1000.0 * (microtime(TRUE) - $now)) . 'ms) ' . $this->file . ' [erase] ' . ($filter ? preg_replace($keys, $vals, $filter[0], 1) : ''));
        if (isset($this->trigger['aftererase'])) {
            \Base::instance()->call($this->trigger['aftererase'], [$this, $pkey]);
        }
        return TRUE;
    }