Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

[タスク] My_Validate_Uniqueで論理削除の切り替えが動作しない

ver 0.0.2の修正箇所。初心者か、と思われるような凡ミス。


My_Validate_IdExistsとMy_Validate_Uniqueで起こっていたバグです。
元々はそれぞれのコンストラクタでこのように書かれていました。

public function __construct($options = array()){
    $this->setColumn($this->_default_column);
    $this->setUseDeleteFlg(true);

    array_shift($options);
    $temp['table'] = array_shift($options);

    if (!empty($options)) {
        $temp['column'] = array_shift($options);
    }
    if (!empty($options)) { // ここで論理削除を有効にするか判定する
        $temp['useDeleteFlg'] = array_shift($options);
    }
    if (!empty($options)) {
        $temp['cond'] = array_shift($options);
    }

    $options = $temp;

    $this->setTable($options['table']);

    if(!empty($options['column'])){
        $this->setColumn($options['column']);
    }
    if(!empty($options['useDeleteFlg'])){ // ここでも判定する
        $this->setUseDeleteFlg($options['useDeleteFlg']);
    }
    if(!empty($options['cond'])){
        $this->setCond($options['cond']);
    }
}

$optionsの第三引数の値で論理削除フラグを使うか使わないか判定するのですが……
この書き方だとempty判定を行っているため、false指定ができない事に。


public function __construct($options = array()){
    $this->setColumn($this->_default_column);
    $this->setUseDeleteFlg(true);

    array_shift($options);
    $temp['table'] = array_shift($options);

    if (!empty($options)) {
        $temp['column'] = array_shift($options);
    }
    if (!empty($options || $options['useDeleteFlg'] === false)) { // false指定可能に
        $temp['useDeleteFlg'] = array_shift($options);
    }
    if (!empty($options)) {
        $temp['cond'] = array_shift($options);
    }

    $options = $temp;

    $this->setTable($options['table']);

    if(!empty($options['column'])){
        $this->setColumn($options['column']);
    }
    if(!empty($options['useDeleteFlg']) || $options['useDeleteFlg'] === false){ // false指定可能に
        $this->setUseDeleteFlg($options['useDeleteFlg']);
    }
    if(!empty($options['cond'])){
        $this->setCond($options['cond']);
    }
}


このようにして解決。
何をやっているんだ私……(´・ω・`)

TrackBack URL :

Leave a comment  

name

email

website

Submit comment