public function validCid( )
{
$cid = XRequest::getint( "cid" );
return $cid;
}
上面这种涵数的调用方法是:$this->cid = $this->service->validCid( );
public function validSearch( )
{
$args = array( );
$countwhere = "";
$s_searchtype = XRequest::getargs( "s_searchtype" );..............}
return array(
$sql,
$countwhere,
$args
);
}
向下面这种涵数里面包含多个对象,那又怎样以最上面那种方式调用.

解决方案 »

  1.   

    这要取决于 XRequest::getargs 是如何定义的从 php5.3 起,你的这种写法会引发一个 Non-static method 错误
      

  2.   

    下面是public function validSearch( )
    涵数全部代码:
    public function validSearch( )
    {
    $args = array( );
    $countwhere = "";
    $s_searchtype = XRequest::getargs( "s_searchtype" );
    $s_sex = XRequest::getint( "s_sex" );
    $s_sage = XRequest::getint( "s_sage" );
    $s_eage = XRequest::getint( "s_eage" );
    $s_dist1 = XRequest::getint( "s_dist1" );
    $s_dist2 = XRequest::getint( "s_dist2" );
    $s_dist3 = XRequest::getint( "s_dist3" );
    $s_lovesort = XRequest::getint( "s_lovesort" );
    $s_sheight = XRequest::getint( "s_sheight" );
    $s_eheight = XRequest::getint( "s_eheight" );
    $s_ssalary = XRequest::getint( "s_ssalary" );
    $s_esalary = XRequest::getint( "s_esalary" );
    $s_sedu = XRequest::getint( "s_sedu" );
    $s_eedu = XRequest::getint( "s_eedu" );
    if ( $s_searchtype == "adv" )
    {
    $s_marry = XRequest::getcomints( "s_marry" );
    $s_havechild = XRequest::getcomints( "s_havechild" );
    }
    else
    {
    $s_marry = XRequest::getargs( "s_marry" );
    $s_havechild = XRequest::getargs( "s_havechild" );
    }
    $s_house = XRequest::getint( "s_house" );
    $s_car = XRequest::getint( "s_car" );
    $s_avatar = XRequest::getint( "s_avatar" );
    $args = array(
    "s_sex" => $s_sex,
    "s_sage" => $s_sage,
    "s_eage" => $s_eage,
    "s_dist1" => $s_dist1,
    "s_dist2" => $s_dist2,
    "s_dist3" => $s_dist3,
    "s_lovesort" => $s_lovesort,
    "s_sheight" => $s_sheight,
    "s_eheight" => $s_eheight,
    "s_ssalary" => $s_ssalary,
    "s_esalary" => $s_esalary,
    "s_sedu" => $s_sedu,
    "s_eedu" => $s_eedu,
    "s_marry" => $s_marry,
    "s_havechild" => $s_havechild,
    "s_house" => $s_house,
    "s_car" => $s_car,
    "s_avatar" => $s_avatar
    );
    $sql = "";
    if ( 0 < $s_sex )
    {
    $sql .= " AND v.gender='".$s_sex."'";
    $countwhere .= " AND ps.gender='".$s_sex."'";
    }
    if ( 0 < $s_sage && 0 < $s_eage )
    {
    $year = date( "Y", time( ) );
    $sageline = $year - $s_eage;
    $eageline = $year - $s_sage;
    $sql .= " AND p.ageyear >= ".$sageline." AND p.ageyear <= {$eageline}";
    $countwhere .= " AND ps.ageyear >= ".$sageline." AND ps.ageyear <= {$eageline}";
    }
    if ( 0 < $s_dist1 )
    {
    $sql .= " AND p.provinceid='".$s_dist1."'";
    $countwhere .= " AND ps.provinceid='".$s_dist1."'";
    }
    if ( 0 < $s_dist2 )
    {
    $sql .= " AND p.cityid='".$s_dist2."'";
    $countwhere .= " AND ps.cityid='".$s_dist2."'";
    }
    if ( 0 < $s_dist3 )
    {
    $sql .= " AND p.distid='".$s_dist3."'";
    $countwhere .= " AND ps.distid='".$s_dist3."'";
    }
    if ( 0 < $s_lovesort )
    {
    $sql .= " AND p.lovesort='".$s_lovesort."'";
    $countwhere .= " AND ps.lovesort='".$s_lovesort."'";
    }
    if ( 0 < $s_sheight && 0 < $s_eheight )
    {
    $sql .= " AND p.height >= ".$s_sheight." AND p.height <= {$s_eheight}";
    $countwhere .= " AND ps.height >= ".$s_sheight." AND ps.height <= {$s_eheight}";
    }
    if ( 0 < $s_ssalary && 0 < $s_esalary )
    {
    $sql .= " AND p.salary >= ".$s_ssalary." AND p.salary <= {$s_esalary}";
    $countwhere .= " AND ps.salary >= ".$s_ssalary." AND ps.salary <= {$s_esalary}";
    }
    if ( 0 < $s_sedu && 0 < $s_eedu )
    {
    $sql .= " AND p.education >= ".$s_sedu." AND p.education <= {$s_eedu}";
    $countwhere .= " AND ps.education >= ".$s_sedu." AND ps.education <= {$s_eedu}";
    }
    if ( TRUE === XValid::iscomchar( $s_marry ) )
    {
    $sql .= " AND p.marrystatus IN (".$s_marry.")";
    $countwhere .= " AND ps.marry IN (".$s_marry.")";
    }
    if ( TRUE === XValid::iscomchar( $s_havechild ) )
    {
    $sql .= " AND p.childrenstatus IN (".$s_havechild.")";
    $countwhere .= " AND ps.child IN (".$s_havechild.")";
    }
    if ( 0 < $s_house )
    {
    $sql .= " AND p.housing='".$s_house."'";
    $countwhere .= " AND ps.house='".$s_house."'";
    }
    if ( 0 < $s_car )
    {
    $sql .= " AND p.caring='".$s_car."'";
    $countwhere .= " AND ps.car='".$s_car."'";
    }
    if ( $s_avatar == 1 )
    {
    $sql .= " AND v.avatar != '' AND v.avatarflag = '1'";
    $countwhere .= " AND ps.avatar='1'";
    }
    return array(
    $sql,
    $countwhere,
    $args
    );
    }
    怎样以$this->cid = $this->service->validCid( );
    这种方式调用?
      

  3.   

    你是这样返回的return array(
      $sql,
      $countwhere,
      $args
    );
    那么可以这样调用和使用
    $a = $this->service->validSearch( ); echo $a[0];
    也可以这样
    list($sql, $countwhere, $args) = $this->service->validSearch( );
      

  4.   

    按你这种方法还是调用不到,这是个搜索功能的涵数,结果是不管按什么条件搜索结果都相同.下面是涵数页调用代码:
    private function _getListItems( )
    {
    $this->_new( );
    $this->type = $this->service->validType( );
    $this->s_uid = $this->service->validUid( );
    $this->s_username = $this->service->validUserName( );
    list($sql, $countwhere, $args) = $this->service->validSearch( );  if ( is_array( $args ) )
    {
    $this->s_sex = intval( $args['s_sex'] );
    $this->s_sage = intval( $args['s_sage'] );
    ..............
    }
    if ( $this->type == "more" )
    {
    $this->_tplfile = $this->getTPLFile( "user_list_more" );
    }
    else
    {
    $this->_tplfile = $this->getTPLFile( "user_list" );
    }
    if ( 0 < $this->s_sex )
    {
    $this->_urlitem .= !empty( $this->_urlitem ) ? "s_sex=".$this->s_sex : "s_sex=".$this->s_sex;
    }
    if ( 0 < $this->s_sage && 0 < $this->s_eage )
    {
    $this->_urlitem .= !empty( $this->_urlitem ) ? "s_sage=".$this->s_sage."s_eage=".$this->s_eage : "s_sage=".$this->s_sage."s_eage=".$this->s_eage;
    }

    if ( TRUE === XValid::isuserargs( $this->s_username ) )
    {
    $this->_urlitem .= !empty( $this->_urlitem ) ? "s_username=".urlencode( $this->s_username ) : "s_username=".urlencode( $this->s_username );
    }
    if ( 0 < parent::$cfg['usermaxpage'] )
    {
    $this->page = parent::$cfg['usermaxpage'] < $this->page ? intval( parent::$cfg['usermaxpage'] ) : $this->page;
    }.....
    $this->pagesize = intval( parent::$cfg['userpagesize'] );
    $this->_unset( );
    }
      

  5.   

    我只能告诉你如何取得 $sql、$countwhere、$args 的值
    至于只是什么那是由你决定的
      

  6.   

    这里帖不下.xuzuning版主.能帮我线下修改这个网页?