/** * 保存数据,包括更新与插入 * * @param array $attr 需要插入或更新的数据 * @param bool|object $o 如果是更新,需要提供当前更新的对象 * @param string $modelName * * @return array * @throws \Exception */ static function dataSave($attr, $o = false, $modelName = '') { try { if ($o) { // 更新 self::$nowModel = $o; self::$isNew = false; } else { // 插入 self::$isNew = true; if (version_compare(PHP_VERSION, '5.5.0', '>')) { //$staticClass = static::class; //5.5以后的版本可以支持这种写法 $staticClass = self::checkModelName($modelName); if (!$staticClass) { throw new Exception('DataSave Error!'); } } else { if ($modelName) { $staticClass = self::checkModelName($modelName); if (!$staticClass) { throw new Exception('DataSave Error!'); } } else { throw new Exception('DataSave Error!'); } } self::$nowModel = new $staticClass(); } if (self::$nowModel->save($attr) == false) { return self::$nowModel; } } catch (\PDOException $e) { throw new \Exception('Db Failed Error: ' . $e->getMessage()); Di::getDefault()->get('flash')->clear(); Di::getDefault()->get('flash')->error('DB Failed 数据操作发生异常'); return false; } self::dataSaveUpdateStatistics($attr); return true; }