コード例 #1
0
ファイル: logger.php プロジェクト: tapiau/muyo
 private static function _dump($obj, $message = null, $logLevel = LOG_DEBUG, $outputFile = null)
 {
     if (is_array($obj)) {
         $collection = array_reduce_val($obj, function ($startValue, $val, $key) {
             return $startValue || $val instanceof Lib_Model;
         }, false);
         if ($collection) {
             $message .= ' [collection]';
             array_each($obj, function ($value, $key) use($message, $logLevel, $outputFile) {
                 self::_dump($value, $message . "[{$key}]", $logLevel, $outputFile);
             });
             return;
         }
     }
     if ($obj instanceof Lib_Model) {
         $message .= sprintf(' %s->toArray()', get_class($obj));
         /* @var Lib_Model $obj */
         $obj = $obj->toArray();
     }
     $dump = var_export($obj, true);
     if (null != $outputFile) {
         fwrite($outputFile, $message . ': ' . $dump);
     } else {
         logger_log($message . ': ' . $dump, $logLevel);
     }
 }
コード例 #2
0
ファイル: mysql.php プロジェクト: tapiau/muyo
 /**
  * WARNING: Only columns copying supported.
  * @param Lib_Model_Db_Mysql $model
  * @param string|null $thisKeyCol may contain table prefix or not
  * @param string|null $thatKeyCol may contain table prefix or not
  * @param string $conditions
  * @return $this
  */
 public function joinFrom($model, $thisKeyCol, $thatKeyCol = null, $conditions = '')
 {
     if ($thatKeyCol === null) {
         debug_assert($thisKeyCol !== null);
         $thatKeyCol = $model->getPrimaryKey();
     } elseif ($thisKeyCol === null) {
         debug_assert($thatKeyCol !== null);
         $thisKeyCol = $this->getPrimaryKey();
     }
     $this->prefixColumn($model, $thatKeyCol);
     $this->prefixColumn($this, $thisKeyCol);
     $conditions = str_replace('{that}', $model->getAlias(), $conditions);
     $conditions = str_replace('{this}', $this->getAlias(), $conditions);
     $this->mapPartWhere($this->addAliasToConditionDg());
     $model->mapPartWhere($model->addAliasToConditionDg());
     $thisFrom = $this->_select->getPart(Zend_Db_Select::FROM);
     $modelColumns = array_chain($model->_select->getPart(Zend_Db_Select::COLUMNS), array_group_dg(array_get_dg(return_dg(0))), array_map_val_dg(array_chain_dg(array_map_val_dg(function ($descriptor) {
         return null === $descriptor[2] ? $descriptor[1] : [$descriptor[2] => $descriptor[1]];
     }), function ($columns) {
         $outArray = [];
         array_map_val($columns, function ($column) use(&$outArray) {
             if (is_array($column)) {
                 array_map_val($column, function ($column, $alias) use(&$outArray) {
                     $outArray[$alias] = $column;
                 });
             } else {
                 $outArray[] = $column;
             }
         });
         return $outArray;
     })));
     array_each($model->_select->getPart(Zend_Db_Select::FROM), function ($descriptor, $alias) use($modelColumns, $thisFrom, $model, $thisKeyCol, $thatKeyCol, $conditions) {
         debug_enforce(!array_key_exists($alias, $thisFrom), "Alias `{$alias}` already used for table `{$descriptor['tableName']}`");
         switch ($descriptor['joinType']) {
             case Zend_Db_Select::FROM:
                 $this->_select->joinLeft([$model->getAlias() => $model->getTable()], "{$thisKeyCol}={$thatKeyCol} " . $conditions, array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::INNER_JOIN:
                 $this->_select->joinInner([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::LEFT_JOIN:
                 $this->_select->joinLeft([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::RIGHT_JOIN:
                 $this->_select->joinRight([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::FULL_JOIN:
                 $this->_select->joinFull([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::CROSS_JOIN:
                 $this->_select->joinCross([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::NATURAL_JOIN:
                 $this->_select->joinNatural([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             default:
                 debug_assert(false, "Unknown join type " . var_dump_human_compact($descriptor['joinType']));
                 break;
         }
     });
     $this->settingsJoin($model);
     return $this;
 }
コード例 #3
0
ファイル: bench.php プロジェクト: Ronmi/xarray-benchmark
function BenchmarkXarrayEach(Benchmark $b)
{
    $arr = makeUserArray(ARRSIZE);
    $b->resetTimer();
    for ($i = 0; $i < $b->N(); $i++) {
        array_each($arr, function ($k, $v) {
            return true;
        });
    }
}
コード例 #4
0
ファイル: arr.php プロジェクト: tapiau/muyo
 /**
  * @param $callable
  * @return callable
  */
 function array_each_dg($callable)
 {
     return function ($array) use($callable) {
         array_each($array, $callable);
     };
 }
コード例 #5
0
ファイル: db.php プロジェクト: tapiau/muyo
 /**
  * @param callable $iterator
  */
 public function each($iterator)
 {
     array_each($this->load(), $iterator);
 }
コード例 #6
0
ファイル: object.php プロジェクト: tapiau/muyo
 /**
  * @param object $object
  * @param callable $callable
  */
 function object_each($object, $callable)
 {
     array_each((array) $object, function () use($callable) {
         call_user_func_array($callable, func_get_args());
     });
 }
コード例 #7
0
ファイル: net.php プロジェクト: tapiau/muyo
 /**
  * @param string|array $content
  * @param string $basename
  * @param string|finfo|null $mime
  * @todo http://tools.ietf.org/id/draft-ietf-http-range-retrieval-00.txt
  */
 function http_response_file_download($content, $basename, $mime = null)
 {
     if (is_array($content)) {
         list($content, $length) = $content;
     } else {
         debug_enforce_type($content, 'string');
         $length = strlen($content);
     }
     if (null === $mime && class_exists('finfo')) {
         $mime = new finfo();
     }
     if (is_object($mime) && $mime instanceof finfo) {
         $mime = $mime->buffer($content, FILEINFO_MIME);
     }
     $headers = ['Pragma: public', 'Expires: -1', 'Cache-Control: public, must-revalidate, post-check=0, pre-check=0', "Content-Disposition: attachment; filename=\"{$basename}\"", "Content-Type: {$mime}", "Content-Length: {$length}"];
     http_output_compression(false);
     array_each($headers, header_dg());
     $download = function () use($content) {
         print $content;
         ob_flush();
         flush();
     };
     call_safe(max_execution_time_set_dg(0), $download, max_execution_time_set_dg(tuple_get(0)));
 }