本文整理汇总了PHP中Thin\Arrays::isAssoc方法的典型用法代码示例。如果您正苦于以下问题:PHP Arrays::isAssoc方法的具体用法?PHP Arrays::isAssoc怎么用?PHP Arrays::isAssoc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Thin\Arrays
的用法示例。
在下文中一共展示了Arrays::isAssoc方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
public function __construct(array $array)
{
$this->key = sha1(serialize($array));
if (Arrays::isAssoc($array)) {
$tab = new SplFixedArray(1);
$tab[0] = $array;
$this->key .= 'AAA';
} else {
$tab = SplFixedArray::fromArray($array);
}
lib('resource')->set($this->key, $tab);
}
示例2: read
public function read($name, $default = null)
{
$file = $this->getFile($name);
$content = $this->import($file);
if ($content) {
if (Arrays::isAssoc($content)) {
return $content;
}
return current($content);
}
return $default;
}
示例3: newRow
public function newRow($data = array())
{
$object = o(sha1(time() . $this->settings['entity'] . session_id() . Utils::token()));
$object->thin_litedb = $this;
$object->id = null;
if (count($data) && Arrays::isAssoc($data)) {
foreach ($this->settings['modelFields'] as $field => $infos) {
$value = ake($field, $data) ? $data[$field] : null;
$object->{$field} = $value;
}
}
return $object;
}
示例4: save
public function save($obj)
{
$data = $obj->tab();
$fields = $this->fields;
$id = Arrays::exists('id', $data) ? $data['id'] : $this->makeKey();
$new = !Arrays::exists('id', $data);
$datemodify = time();
$checkTuple = Arrays::exists('checkTuple', $this->settings) ? $this->settings['checkTuple'] : null;
$store = array();
if (true === $new) {
$datecreate = time();
} else {
$datecreate = $data['date_create'];
}
if (count($data) && Arrays::isAssoc($data)) {
foreach ($fields as $field => $info) {
$val = Arrays::exists($field, $data) ? $data[$field] : null;
if (empty($val)) {
if (!Arrays::exists('canBeNull', $info)) {
if (!Arrays::exists('default', $info)) {
throw new Exception('The field ' . $field . ' cannot be null.');
} else {
$val = $info['default'];
}
}
} else {
if (Arrays::exists('sha1', $info)) {
if (!preg_match('/^[0-9a-f]{40}$/i', $val) || strlen($val) != 40) {
$val = sha1($val);
}
} elseif (Arrays::exists('md5', $info)) {
if (!preg_match('/^[0-9a-f]{32}$/i', $val) || strlen($val) != 32) {
$val = md5($val);
}
} elseif (Arrays::exists('checkValue', $info)) {
$closure = $info['checkValue'];
if ($closure instanceof Closure) {
$val = $closure($val);
}
}
}
$store[$field] = $val;
}
if (!empty($checkTuple)) {
if (is_string($checkTuple)) {
$cond = "{$checkTuple} = " . $store[$checkTuple];
$res = $this->query($cond);
}
if (Arrays::is($checkTuple)) {
$query = '';
foreach ($checkTuple as $ct) {
$query .= $ct . ' = ' . $store[$ct] . ' && ';
}
$query = substr($query, 0, -4);
$tabConditions = explode(' && ', $query);
$init = true;
foreach ($tabConditions as $cond) {
$res = $this->query($cond);
if (true === $init) {
$init = false;
$results = $res;
} else {
$results = array_intersect($results, $res);
}
}
$res = $this->fetch($results);
}
if (count($res) && !Arrays::in($id, $res)) {
$tupleId = is_object(Arrays::first($res)) ? Arrays::first($res)->getId() : Arrays::first($res);
return $this->row($tupleId);
}
}
if (true === $new) {
$q = "INSERT INTO datas (id, datecreate, datemodify, value) VALUES (\n '" . SQLite3::escapeString($id) . "',\n '" . SQLite3::escapeString($datecreate) . "',\n '" . SQLite3::escapeString($datemodify) . "',\n '" . SQLite3::escapeString(serialize($store)) . "'\n )";
} else {
$q = "UPDATE datas SET\n datemodify = '" . SQLite3::escapeString($datemodify) . "',\n value = '" . SQLite3::escapeString(serialize($store)) . "'\n WHERE id = '" . SQLite3::escapeString($id) . "'\n ";
}
if (false === $this->transac) {
$this->db->exec($q);
} else {
array_push($this->transactions, $q);
}
$data = $this->session->getData();
$store['id'] = $id;
$store['date_create'] = $datecreate;
$row = $this->make($store);
$data[$id] = $row;
$this->session->setData($data);
return $row;
}
return $obj;
}
示例5: populate
public function populate(array $datas, $namespace = null)
{
if (null !== $namespace) {
if (!isset($this->{$namespace})) {
$this->{$namespace} = [];
}
foreach ($datas as $k => $v) {
if (Arrays::is($k)) {
$this->populate($k, $namespace);
} else {
$this->{$namespace} = array_merge($this->{$namespace}, [$k => $v]);
}
}
} else {
foreach ($datas as $k => $v) {
$id = isAke($datas, 'id', false);
if (Arrays::is($v) && false === $id) {
if (Arrays::isAssoc($v)) {
$o = new self();
$o->populate($v);
$this->{$k} = $o;
} else {
$this->{$k} = $v;
}
} else {
$this->{$k} = $v;
}
if (!Arrays::in($k, $this->_fields)) {
$this->_fields[] = $k;
}
}
}
return $this;
}
示例6: hydrate
public function hydrate(array $data = [])
{
$data = empty($data) ? $_POST : $data;
if (Arrays::isAssoc($data)) {
foreach ($data as $k => $v) {
if ($k != 'id') {
if ('true' == $v) {
$v = true;
} elseif ('false' == $v) {
$v = false;
} elseif ('null' == $v) {
$v = null;
}
if (fnmatch('*_id', $k)) {
if (is_numeric($v)) {
$v = (int) $v;
} elseif (is_object($value)) {
$v = (int) $v->id;
$this->_data[str_replace('_id', '', $k)] = $v->toArray();
}
} else {
if (is_object($value)) {
$this->_data[$k . '_id'] = $v->id;
$value = $v->toArray();
}
}
$this->_data[$k] = $v;
}
}
}
return $this;
}
示例7: isAke
function isAke($tab, $key, $default = array())
{
return Arrays::is($tab) ? Arrays::isAssoc($tab) ? Arrays::exists($key, $tab) ? $tab[$key] : $default : $default : $default;
}
示例8: treatCast
private function treatCast($tab)
{
if (!empty($tab) && Arrays::isAssoc($tab)) {
foreach ($tab as $k => $v) {
if (fnmatch('*_id', $k) && !empty($v)) {
if (is_numeric($v)) {
$tab[$k] = (int) $v;
}
}
}
}
return $tab;
}
示例9: closures
private function closures($obj)
{
$params = $this->args;
$fn = function ($name, Closure $callable) use($obj, $params) {
if (is_callable($callable)) {
list($db, $table, $host, $username, $password) = $params;
$dbi = Database::instance($db, $table, $host, $username, $password);
$share = function () use($obj, $callable, $dbi) {
$args = func_get_args();
$args[] = $obj;
$args[] = $dbi;
return call_user_func_array($callable, $args);
};
$obj->event($name, $share);
return $obj;
}
};
$save = function ($object = true) use($obj, $params) {
list($db, $table, $host, $username, $password) = $params;
$db = Database::instance($db, $table, $host, $username, $password);
return $db->save($obj, $object);
};
$db = function () use($params) {
list($db, $table, $host, $username, $password) = $params;
return Database::instance($db, $table, $host, $username, $password);
};
$query = function () use($params) {
list($db, $table, $host, $username, $password) = $params;
return new Query(Database::instance($db, $table, $host, $username, $password));
};
$delete = function () use($obj, $params) {
list($db, $table, $host, $username, $password) = $params;
$db = Database::instance($db, $table, $host, $username, $password);
$pk = $db->pk();
return $db->deleteRow($obj->{$pk});
};
$id = function () use($obj, $params) {
list($db, $table, $host, $username, $password) = $params;
$db = Database::instance($db, $table, $host, $username, $password);
$pk = $db->pk();
return $obj->{$pk};
};
$exists = function () use($obj, $params) {
list($db, $table, $host, $username, $password) = $params;
$db = Database::instance($db, $table, $host, $username, $password);
$pk = $db->pk();
return isset($obj->{$pk});
};
$touch = function () use($obj) {
if (!isset($obj->created_at)) {
$obj->created_at = time();
}
$obj->updated_at = time();
return $obj;
};
$duplicate = function ($object = true) use($obj, $params) {
list($db, $table, $host, $username, $password) = $params;
$db = Database::instance($db, $table, $host, $username, $password);
$pk = $db->pk();
if (isset($obj->{$pk})) {
unset($obj->{$pk});
}
if (isset($obj->created_at)) {
unset($obj->created_at);
}
return $obj->save($object);
};
$orm = function () use($params) {
list($db, $table, $host, $username, $password) = $params;
return Database::instance($db, $table, $host, $username, $password);
};
$cache = function ($bool = true) use($params) {
list($db, $table, $host, $username, $password) = $params;
$database = Database::instance($db, $table, $host, $username, $password);
$database->cache($bool);
return $database;
};
$as = $this->as;
$foreign = function () use($as) {
return $as;
};
$many = function ($table, $field = null, $object = false) use($obj) {
$tab = $obj->assoc();
$db = model($table);
$pk = is_null($field) ? $db->pk() : $field;
$value = $tab[$db->table . '_id'];
return $db->where("{$pk} = {$value}")->execute($object);
};
$one = function ($table, $field = null, $object = false) use($obj) {
$tab = $obj->assoc();
$db = model($table);
$pk = is_null($field) ? $db->pk() : $field;
$value = $tab[$db->table . '_id'];
return $db->where("{$pk} = {$value}")->first($object);
};
$hydrate = function ($data = array()) use($obj) {
$data = empty($data) ? $_POST : $data;
if (Arrays::isAssoc($data)) {
foreach ($data as $k => $v) {
if ("true" == $v) {
//.........这里部分代码省略.........
示例10: closures
private function closures($obj)
{
$db = $this;
$db->results = null;
$db->wheres = null;
$save = function () use($obj, $db) {
return $db->save($obj);
};
$database = function () use($db) {
return $db;
};
$delete = function () use($obj, $db) {
return $db->deleteRow($obj->id);
};
$deleteSoft = function () use($obj, $db) {
$obj->deleted_at = time();
return $db->save($obj);
};
$id = function () use($obj) {
return isset($obj->id) ? $obj->id : null;
};
$exists = function () use($obj) {
return isset($obj->id);
};
$touch = function () use($obj) {
if (!isset($obj->created_at)) {
$obj->created_at = time();
}
$obj->updated_at = time();
return $obj;
};
$duplicate = function () use($obj, $db) {
$obj->copyrow = Utils::token();
$data = $obj->assoc();
unset($data['id']);
unset($data['created_at']);
unset($data['updated_at']);
$obj = $db->row($data);
return $obj->save();
};
$hydrate = function ($data = []) use($obj) {
$data = empty($data) ? $_POST : $data;
if (Arrays::isAssoc($data)) {
foreach ($data as $k => $v) {
if ('true' == $v) {
$v = true;
} elseif ('false' == $v) {
$v = false;
} elseif ('null' == $v) {
$v = null;
}
$obj->{$k} = $v;
}
}
return $obj;
};
$date = function ($field, $format = 'Y-m-d H:i:s') use($obj) {
return date($format, $obj->{$field});
};
$string = function () use($obj) {
if (isset($obj->name)) {
return $obj->name;
}
return $obj->id;
};
$model = function () use($db, $obj) {
return Model::instance($db, $obj);
};
$obj->event('save', $save)->event('delete', $delete)->event('deletesoft', $deleteSoft)->event('date', $date)->event('exists', $exists)->event('id', $id)->event('db', $database)->event('touch', $touch)->event('hydrate', $hydrate)->event('string', $string)->event('model', $model)->event('duplicate', $duplicate);
$settings = isAke(self::$config, "{$this->db}.{$this->table}");
$functions = isAke($settings, 'functions');
if (!empty($functions)) {
foreach ($functions as $closureName => $callable) {
$closureName = lcfirst(Inflector::camelize($closureName));
if (Arrays::is($callable)) {
list($callable, $callableArgs) = $callable;
} else {
$callableArgs = [];
}
$share = function () use($obj, $callable, $db, $callableArgs) {
$args = [];
if (!empty($callableArgs)) {
$args[] = $callableArgs;
}
$args[] = $obj;
$args[] = $db;
return call_user_func_array($callable, $args);
};
$obj->event($closureName, $share);
}
}
return $this->related($obj);
}
示例11: functions
private function functions($obj)
{
$settings = isAke(static::$configs, $this->entity);
$class = $this;
$class->results = null;
$class->wheres = null;
$save = function () use($class, $obj) {
return $class->save($obj->assoc());
};
$delete = function () use($class, $obj) {
return $class->delete($obj->getId());
};
$date = function ($f) use($obj) {
return date('Y-m-d H:i:s', $obj->{$f});
};
$hydrate = function ($data) use($obj) {
if (Arrays::isAssoc($data)) {
foreach ($data as $k => $v) {
$obj->{$k} = $v;
}
}
return $obj;
};
$display = function ($field, $echo = true) use($obj) {
$val = Html\Helper::display($obj->{$field});
if (true === $echo) {
echo $val;
} else {
return $val;
}
};
$tab = function () use($obj) {
return $obj->assoc();
};
$asset = function ($field) use($obj) {
return '/storage/img/' . $obj->{$field};
};
$obj->event('save', $save)->event('delete', $delete)->event('date', $date)->event('hydrate', $hydrate)->event('tab', $tab)->event('asset', $asset)->event('display', $display);
$functions = isAke($settings, 'functions');
if (count($functions)) {
foreach ($functions as $closureName => $callable) {
if (version_compare(PHP_VERSION, '5.4.0', "<")) {
$share = function () use($obj, $callable) {
return $callable($obj);
};
} else {
$share = $callable->bindTo($obj);
}
$obj->event($closureName, $share);
}
}
return $obj;
}
示例12: row
public function row(array $data, $recursive = true, $extends = array())
{
if (Arrays::isAssoc($data)) {
$obj = o(sha1(serialize($data)));
$obj->db_instance = $this;
if (count($extends)) {
foreach ($extends as $name => $instance) {
$closure = function ($object) use($name, $instance) {
$idx = $object->is_thin_object;
$objects = Utils::get('thinObjects');
return $instance->{$name}($objects[$idx]);
};
$obj->_closures[$name] = $closure;
}
}
$fields = $this->fields();
foreach ($fields as $field) {
$hasFk = $this->hasFk($field);
if (false === $hasFk) {
$obj->{$field} = $data[$field];
} else {
extract($hasFk);
$ar = ar($foreignEntity, $foreignTable);
$one = contain('toone', Inflector::lower($type));
if ($one && $recursive) {
$foreignObj = $ar->findBy($foreignKey, $data[$field], $one);
$obj->{$relationKey} = $foreignObj;
}
}
}
$hasFk = ake('relationships', $this->_settings);
if (true === $hasFk && $recursive) {
$rs = $this->_settings['relationships'];
if (count($rs)) {
foreach ($rs as $field => $infos) {
extract($infos);
$ar = ar($foreignEntity, $foreignTable);
if (!Arrays::in($field, $fields)) {
$pk = $this->pk();
$obj->{$field} = $ar->findBy($foreignKey, $obj->{$pk}, false, false);
}
}
}
}
return $obj;
}
return null;
}
示例13: delete
private function delete()
{
if ($this->isDelete()) {
$data = isAke($_REQUEST, 'data', []);
if (!empty($data)) {
if (Arrays::isAssoc($data)) {
$id = isAke($data, 'id', false);
if ($id) {
$row = $this->db->find($id);
if ($row) {
$row->delete();
Api::render(['status' => 200, 'execution_time' => Timer::get(), 'token' => $this->token, 'message' => 'Row id [' . $id . '] deleted']);
}
} else {
$where = isAke($data, 'where', false);
if ($where) {
$where = eval('return ' . $where . ';');
$cursor = $this->db->multiQuery($where)->cursor();
$count = $cursor->count();
$cursor->delete();
Api::render(['status' => 200, 'execution_time' => Timer::get(), 'token' => $this->token, 'message' => $count . ' rows deleted']);
}
}
}
}
}
Api::forbidden();
}
示例14: closures
private function closures($obj)
{
$settings = isAke(self::$configs, $this->entity);
$class = $this;
$class->results = null;
$class->wheres = null;
$class->joins = null;
$class->transactions = null;
$export = function () use($class, $obj) {
if (isset($obj->id)) {
$class->where("id = " . $obj->id)->export();
}
};
$save = function () use($class, $obj) {
return $class->save($obj->assoc());
};
$delete = function () use($class, $obj) {
return $class->delete($obj->getId());
};
$date = function ($f) use($obj) {
return date('Y-m-d H:i:s', $obj->{$f});
};
$hydrate = function ($data = array()) use($obj) {
$data = empty($data) ? $_POST : $data;
if (Arrays::isAssoc($data)) {
foreach ($data as $k => $v) {
if ("true" == $v) {
$v = true;
} elseif ("false" == $v) {
$v = false;
} elseif ("null" == $v) {
$v = null;
}
$obj->{$k} = $v;
}
}
return $obj;
};
$display = function ($field, $echo = true) use($obj) {
$val = Html\Helper::display($obj->{$field});
if (true === $echo) {
echo $val;
} else {
return $val;
}
};
$hook = function ($callable, $primary, $when = 'before') use($obj) {
if (!is_callable($obj->{$primary})) {
throw new Exception("Hook method does not exist.");
}
$args = func_get_args();
array_shift($args);
array_shift($args);
$newName = '_' . $primary;
$obj->{$newName} = $obj->{$primary};
$share = function () use($callable, $primary, $when, $obj, $args, $newName) {
if ($when == 'before') {
array_push($args, $obj);
$obj = call_user_func_array($callable, $args);
array_pop($args);
return call_user_func_array($obj->{$newName}, $args);
} elseif ($when == 'after') {
$obj = call_user_func_array($obj->{$newName}, $args);
array_push($args, $obj);
return call_user_func_array($callable, $args);
}
};
$obj->event($primary, $share);
return $obj;
};
$id = function () use($obj) {
return $obj->getId();
};
$exists = function () use($obj) {
$id = $obj->getId();
return !is_null($id);
};
$obj->event('save', $save)->event('delete', $delete)->event('hook', $hook)->event('date', $date)->event('hydrate', $hydrate)->event('export', $export)->event('id', $id)->event('exists', $exists)->event('display', $display);
$functions = isAke($settings, 'functions');
if (count($functions)) {
foreach ($functions as $closureName => $callable) {
$closureName = lcfirst(Inflector::camelize($closureName));
$share = function () use($obj, $callable) {
$args = func_get_args();
$args[] = $obj;
return call_user_func_array($callable, $args);
};
$obj->event($closureName, $share);
}
}
$hidden = isAke($settings, 'hidden');
if (count($hidden)) {
foreach ($hidden as $hiddenField) {
if (isset($obj->{$hiddenField}) && !is_callable($obj->{$hiddenField})) {
unset($obj->{$hiddenField});
}
}
}
return $this->related($obj);
}
示例15: closures
private function closures($obj)
{
$db = $this;
$db->results = null;
$db->wheres = null;
$save = function () use($obj, $db) {
return $db->save($obj);
};
$database = function () use($db) {
return $db;
};
$delete = function () use($obj, $db) {
return $db->deleteRow($obj->id);
};
$id = function () use($obj) {
return $obj->id;
};
$exists = function () use($obj) {
return isset($obj->id);
};
$touch = function () use($obj) {
if (!isset($obj->created_at)) {
$obj->created_at = time();
}
$obj->updated_at = time();
return $obj;
};
$duplicate = function () use($obj) {
if (isset($obj->id)) {
unset($obj->id);
}
if (isset($obj->created_at)) {
unset($obj->created_at);
}
return $obj->save();
};
$hydrate = function ($data = array()) use($obj) {
$data = empty($data) ? $_POST : $data;
if (Arrays::isAssoc($data)) {
foreach ($data as $k => $v) {
if ('true' == $v) {
$v = true;
} elseif ('false' == $v) {
$v = false;
} elseif ('null' == $v) {
$v = null;
}
$obj->{$k} = $v;
}
}
return $obj;
};
$date = function ($f) use($obj) {
return date('Y-m-d H:i:s', $obj->{$f});
};
$obj->event('save', $save)->event('delete', $delete)->event('date', $date)->event('exists', $exists)->event('id', $id)->event('db', $database)->event('touch', $touch)->event('hydrate', $hydrate)->event('duplicate', $duplicate);
$settings = isAke(self::$config, "{$this->db}.{$this->table}");
$functions = isAke($settings, 'functions');
if (count($functions)) {
foreach ($functions as $closureName => $callable) {
$closureName = lcfirst(Inflector::camelize($closureName));
$share = function () use($obj, $callable, $db) {
$args[] = $obj;
$args[] = $db;
return call_user_func_array($callable, $args);
};
$obj->event($closureName, $share);
}
}
return $this->related($obj);
}