如何返回并打印特定方法?

时间:2016-01-06 23:28:49

标签: php arrays class methods instance

我在课堂上有2个方法。

第一种方法让$id通过webservice检索特定项目的3个参数。这是一个房地产系统的网络服务。我将使用这3个参数来查找相关项目。

到目前为止,一切正常。

我的问题是返回resemblant()方法的数据。

我实例化object,我将$id发送到功能方法,然后我注册了属性

$get属性返回信息,但$similar = $obj->resemblant()没有返回。

我正在学习。

  

如何返回resemblant()中方法$similar内的 数据

<?php 

require("Acesso.class.php");

class Semelhantes extends Acesso
{
    public function features($id)
    {
        $postFields  = '{"fields":["Codigo","Categoria","Bairro","Cidade","ValorVenda","ValorLocacao","Dormitorios","Suites","Vagas","AreaTotal","AreaPrivativa","Caracteristicas","InfraEstrutura"]}';
        $url         = 'http://danielbo-rest.vistahost.com.br/'.$this->vsimoveis.'/'.$this->vsdetalhes.'?key=' . $this->vskey;
        $url           .= '&imovel='.$id.'&pesquisa=' . $postFields;

        $ch = curl_init($url);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt( $ch, CURLOPT_HTTPHEADER , array( 'Accept: application/json' ) );
        $result = curl_exec($ch); 
        $result = json_decode($result, true);

        /**
         * Paramentros para filtrar semelhança
         * @var [type]
         */
        $fcidade    = str_replace(" ", "+", $result['Cidade']);
        $fdorms     = $result['Dormitorios'];
        $fvalor     = $result['ValorVenda'];

        return array(
            'cidade' => $fcidade, 
            'dorms' => $fdorms, 
            'valor' => $fvalor
        );

    }

    public function resemblant()
    {
        $get = $this->features($id);
        return $get['Cidade'];
    }

}

/* Chamando as funções em outra parte do sistema */
$obj        = new Semelhantes;
$features   = $obj->features(2);
$similar    = $obj->resemblant();

非常感谢

2 个答案:

答案 0 :(得分:2)

您可以通过多种方式解决此处的问题

首先,您可以更改resemblant()以接收参数

public function resemblant($id)
{
    $get = $this->features($id);
    return $get['cidade'];   // case of variable fixed also
}

并使用与features()

相同的参数调用它
/* Chamando as funções em outra parte do sistema */
$obj        = new Semelhantes;
$features   = $obj->features(2);
$similar    = $obj->resemblant(2);
echo $similar;

或者您可以将参数作为属性传递给features()并在resemblant()

中重复使用
protected $last_id;

public function features($id)
{

    $this->last_id = $id;

    // other existing code

}

public function resemblant()
{
    $get = $this->features($this->last_id);
    return $get['cidade'];   // case of variable fixed also
}

然后像你原来那样调用这些方法

/* Chamando as funções em outra parte do sistema */
$obj        = new Semelhantes;
$features   = $obj->features(2);
$similar    = $obj->resemblant();

echo $similar;

答案 1 :(得分:1)

在第一个函数中,您可以像这样设置数组:

return array(
   'cidade' => $fcidade, 
   'dorms'  => $fdorms, 
   'valor'  => $fvalor
);

在第二个函数中,您可以像这样访问值:

return $get['Cidade'];

请注意 cidade Cidade ?不同的情况。这就是你的意思:

return $get['cidade'];

您可以在此处阅读有关数组中区分大小写的更多信息:PHP array, Are array indexes case sensitive?