本文整理汇总了PHP中Ak::call_user_func_array方法的典型用法代码示例。如果您正苦于以下问题:PHP Ak::call_user_func_array方法的具体用法?PHP Ak::call_user_func_array怎么用?PHP Ak::call_user_func_array使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ak
的用法示例。
在下文中一共展示了Ak::call_user_func_array方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: func_get_args
public function &find()
{
$result = false;
if (!$this->Owner->isNewRecord()) {
$args = func_get_args();
$num_args = func_num_args();
if (!empty($args[$num_args - 1]) && is_array($args[$num_args - 1])) {
$options_in_args = true;
$options = $args[$num_args - 1];
} else {
$options_in_args = false;
$options = array();
}
$this->constructSql(!empty($options['include']));
$has_many_options = $this->getOptions($this->association_id);
$Associated =& $this->getAssociatedModelInstance();
if (empty($options['conditions'])) {
$options['conditions'] = @$has_many_options['finder_sql'];
} elseif (!empty($has_many_options['finder_sql']) && is_array($options['conditions']) && !strstr($options['conditions'][0], $has_many_options['finder_sql'])) {
$options['conditions'][0] .= ' AND ' . $has_many_options['finder_sql'];
} elseif (!empty($has_many_options['finder_sql']) && !strstr($options['conditions'], $has_many_options['finder_sql'])) {
$options['conditions'] .= ' AND ' . $has_many_options['finder_sql'];
}
$options['bind'] = empty($options['bind']) ? @$has_many_options['bind'] : $options['bind'];
$options['order'] = empty($options['order']) ? @$has_many_options['order'] : $options['order'];
$options['group'] = empty($options['group']) ? @$has_many_options['group'] : $options['group'];
$options['include'] = empty($options['include']) ? @$has_many_options['include'] : $options['include'];
if (!empty($options['bind'])) {
$options['bind'] = Ak::toArray($options['bind']);
$options['bind'] = array_diff($options['bind'], array(''));
$options['conditions'] = is_array($options['conditions']) ? $options['conditions'] : array($options['conditions']);
$options['conditions'] = array_merge($options['conditions'], $options['bind']);
unset($options['bind']);
}
if ($options_in_args) {
$args[$num_args - 1] = $options;
} else {
$args = empty($args) ? array('all') : $args;
array_push($args, $options);
}
$result =& Ak::call_user_func_array(array(&$Associated, 'find'), $args);
}
return $result;
}
示例2: func_get_args
/**
* This method allows you to use finders in a more flexible way like:
*
* findBy('username AND password', $username, $password);
* findBy('age > ? AND name:contains', 18, 'Joe');
* findBy('is_active = true AND session_id', session_id());
*
*/
function &findBy()
{
if(!isset($this->_activeRecordHasBeenInstantiated)){
return Ak::handleStaticCall();
}
$args = func_get_args();
$find_by_sql = array_shift($args);
if($find_by_sql == 'all' || $find_by_sql == 'first'){
$fetch = $find_by_sql;
$find_by_sql = array_shift($args);
}else{
$fetch = 'all';
}
$options = $this->_extractOptionsFromArgs($args);
$query_values = $args;
$query_arguments_count = count($query_values);
list($sql, $requested_args) = $this->_getFindBySqlAndColumns($find_by_sql, $query_values);
if($query_arguments_count != count($requested_args)){
trigger_error(Ak::t('Argument list did not match expected set. Requested arguments are:').join(', ',$requested_args),E_USER_ERROR);
$false = false;
return $false;
}
$true_bool_values = array(true,1,'true','True','TRUE','1','y','Y','yes','Yes','YES','s','Si','SI','V','v','T','t');
foreach ($requested_args as $k=>$v){
switch ($this->getColumnType($v)) {
case 'boolean':
$query_values[$k] = in_array($query_values[$k],$true_bool_values) ? true : false;
break;
case 'date':
case 'datetime':
$query_values[$k] = str_replace('/','-', $this->castAttributeForDatabase($k,$query_values[$k],false));
break;
default:
break;
}
}
$conditions = array($sql);
foreach ($query_values as $bind_value){
$conditions[] = $bind_value;
}
/**
* @todo merge_conditions
*/
$options['conditions'] = $conditions;
$result =& Ak::call_user_func_array(array(&$this,'find'), array($fetch,$options));
return $result;
}
示例3: find
function find()
{
$result =& $GLOBALS['false'];
if (!$this->Owner->isNewRecord()) {
$this->constructSql();
$has_and_belongs_to_many_options = $this->getOptions($this->association_id);
$Associated =& $this->getAssociatedModelInstance();
$args = func_get_args();
$num_args = func_num_args();
if (!empty($args[$num_args - 1]) && is_array($args[$num_args - 1])) {
$options_in_args = true;
$options = $args[$num_args - 1];
} else {
$options_in_args = false;
$options = array();
}
$options['conditions'] = empty($options['conditions']) ? @$has_and_belongs_to_many_options['finder_sql'] : (empty($has_and_belongs_to_many_options['finder_sql']) || strstr($options['conditions'], $has_and_belongs_to_many_options['finder_sql']) ? $options['conditions'] : $options['conditions'] . ' AND ' . $has_and_belongs_to_many_options['finder_sql']);
$options['order'] = empty($options['order']) ? @$has_and_belongs_to_many_options['order'] : $options['order'];
$options['select_prefix'] = '';
if ($options_in_args) {
$args[$num_args - 1] = $options;
} else {
$args = empty($args) ? array('all') : $args;
array_push($args, $options);
}
$result =& Ak::call_user_func_array(array(&$Associated, 'find'), $args);
}
return $result;
}
示例4: func_get_args
function &findAllBy()
{
if (!isset($this->_activeRecordHasBeenInstantiated)) {
return Ak::handleStaticCall();
}
$args = func_get_args();
if ($args[0] == 'first') {
array_shift($args);
}
$result =& Ak::call_user_func_array(array(&$this, 'findBy'), $args);
return $result;
}
示例5: func_get_args
function &find()
{
$Versioned = false;
$VersionedInstance =& $this->getInstance();
$finder_sql = $this->options['foreign_key'].' = '.$this->_ActiveRecordInstance->quotedId();
$finder_order = $this->options['version_column'].' ASC';
$args = func_get_args();
$args = $this->_getArgumentsForFinder($args, $finder_sql, $finder_order);
$Versioned =& Ak::call_user_func_array(array(&$VersionedInstance,'find'), $args);
if($Versioned){
if(is_array($Versioned)){
foreach (array_keys($Versioned) as $k){
$Versioned[$k]->VersionHandler =& $this;
}
}else{
$Versioned->VersionHandler =& $this;
}
}
return $Versioned;
}
示例6: func_get_args
function &find()
{
$result = false;
if(!$this->Owner->isNewRecord()){
$this->constructSql();
$has_and_belongs_to_many_options = $this->getOptions($this->association_id);
$Associated =& $this->getAssociatedModelInstance();
$args = func_get_args();
$num_args = func_num_args();
if(!empty($args[$num_args-1]) && is_array($args[$num_args-1])){
$options_in_args = true;
$options = $args[$num_args-1];
}else{
$options_in_args = false;
$options = array();
}
/**if (isset($args[0]) && is_int($args[0])) {
$findId = $args[0];
$args[0] = 'first';
if (!isset($args[1])) {
$args[1] = array();
} else if (!isset($args[1]['conditions'])) {
$args[1]['conditions'] = array();
} else if (!is_arraY($args[1]['conditions'])) {
$args[1]['conditions'] = array($args[1]['conditions']);
}
if (!isset($args[1]['conditions'][1])) {
$args[1]['conditions'][1] = array();
} else if (!is_array($args[1]['conditions'][1])) {
$args[1]['conditions'][1] = array($args[1]['conditions'][1]);
}
$args[1]['conditions'][1][]=$findId;
}*/
/**
* Buggy Part
*/
/**$options['conditions'] = empty($options['conditions']) ? @$has_and_belongs_to_many_options['finder_sql'] :
(empty($has_and_belongs_to_many_options['finder_sql']) || strstr($options['conditions'], $has_and_belongs_to_many_options['finder_sql'])
? $options['conditions'] : $options['conditions'].' AND '.$has_and_belongs_to_many_options['finder_sql']);
*/
if(empty($options['conditions'])) {
$options['conditions'] = @$has_and_belongs_to_many_options['finder_sql'];
} else if (empty($has_and_belongs_to_many_options['finder_sql']) || (!is_array($options['conditions']) && strstr($options['conditions'], $has_and_belongs_to_many_options['finder_sql']))) {
$options['conditions'] = $options['conditions'];
} else {
if (stristr($has_and_belongs_to_many_options['finder_sql'],' WHERE ')) {
$wherePos = stripos($has_and_belongs_to_many_options['finder_sql'],'WHERE');
$oldConditions = substr($has_and_belongs_to_many_options['finder_sql'],$wherePos+5);
if(is_array($options['conditions'])) {
$newConditions = array_shift($options['conditions']);
$bind = $options['conditions'];
} else {
$newConditions = $options['conditions'];
$bind = array();
}
$newConditions = $this->Owner->_addTableAliasesToAssociatedSql($has_and_belongs_to_many_options['table_name'],$newConditions);
$options['conditions'] = trim(substr($has_and_belongs_to_many_options['finder_sql'],0, $wherePos)).' WHERE ('.trim($newConditions).') AND ('.trim($oldConditions).')';
if (!empty($bind)) {
$options['conditions'] = array_merge(array($options['conditions']),$bind);
}
} else {
$options['conditions'] = '('.$options['conditions'].') AND ('.$has_and_belongs_to_many_options['finder_sql'].')';
}
}
$options['include'] = empty($options['include']) ? @$has_and_belongs_to_many_options['include'] : $options['include'];
$options['bind'] = empty($options['bind']) ? @$has_and_belongs_to_many_options['bind'] : $options['bind'];
$options['order'] = empty($options['order']) ? @$has_and_belongs_to_many_options['order'] : $options['order'];
$options['group'] = empty($options['group']) ? @$has_and_belongs_to_many_options['group'] : $options['group'];
$options['select_prefix'] = '';
if (!empty($options['bind'])) {
$options['bind'] = Ak::toArray($options['bind']);
$options['bind'] = array_diff($options['bind'],array(''));
$options['conditions'] = is_array($options['conditions'])?$options['conditions']:array($options['conditions']);
$options['conditions'] = array_merge($options['conditions'],$options['bind']);
unset($options['bind']);
}
if (is_array($options['conditions'])) {
$options['conditions'][0]=trim($Associated->_addTableAliasesToAssociatedSql($has_and_belongs_to_many_options['table_name'],$options['conditions'][0]));
} else {
empty($options['conditions']) ?null:$options['conditions']=trim($Associated->_addTableAliasesToAssociatedSql($has_and_belongs_to_many_options['table_name'],$options['conditions']));
}
empty($options['order']) ?null:$options['order']=trim($Associated->_addTableAliasesToAssociatedSql($has_and_belongs_to_many_options['table_name'],$options['order']));
empty($options['group']) ?null:$options['group']=trim($Associated->_addTableAliasesToAssociatedSql($has_and_belongs_to_many_options['table_name'],$options['group']));
if($options_in_args){
$args[$num_args-1] = $options;
}else{
$args = empty($args) ? array('all') : $args;
array_push($args, $options);
}
$result =& Ak::call_user_func_array(array(&$Associated,'find'), $args);
}
//.........这里部分代码省略.........