PHP类私有变量misdirected值

时间:2013-02-12 17:55:36

标签: php javascript jquery class private-methods

首先,我的问题来自我的php类,由一个由AJAX调用访问的php文件调用。

问题是返回值完全错误并且与sybase_result值不同。那我错过了什么?

以下是我的计划的步骤。

首先我们进行AJAX调用:

$.ajax(
{
    type: "POST",
    url: "ajax/load_fiche_resume.php",
    timeout:5000,
    dataType: 'json',
    data: ({matricule:matricule, id_mun:id_mun}),
    beforeSend: function()
    {
        // Handle the beforeSend event
        $('#loading-bar').show("slow");
    },
    complete: function()
    {
        // Handle the complete event
        $('#loading-bar').hide("slow");

    },
    success: function(data)
    {

        console.dir(data);

        $('#tab-role').html(formatData(data));
    },
    error: function () 
    {
        alert("Oops! Une erreur c'est produite.\nVeuiller rafraichir la page. \nSi cela se reproduit, veuiller contacter le propriétaire du site.");
    }
});

然后,我们进入php文件load_fiche_resume.php

include('../class/class_role.php');

$oRole = new Role("42025", "2036-94-5034");


$ar_step2 = array(
                array("Propriétaire(s)"),
                array("Nom(s) : ", $oRole->getProprioNoms() ),
                array("Adresse postale : ", $oRole->getProprioAdresse() ),
                array("Condition particulière d'inscription : ", $oRole->getProprioCondition() ),
                array("Date d'inscription au rôle : ", $oRole->getProprioDateInscription() )
            );

如果我们仔细观察上面的代码,函数$ oRole-> getProprioDateInscription()的返回值应该是一个日期。但是这个函数不是日期,而是从另一个get函数返回一个字符串(即:它将显示$ oRole-> getProprioNoms的值),这是完全错误的。

如果我们进入$ oRole类,我们就有了这个:

class Role
{
    private $prop_inscription;
    public function getInfoProprio()
    {
        $qry = "SELECT 
                    p.nom_form AS nom_form,
                    p.t_typos AS t_typos,
                    substr(p.d_date_inscr,1,10) AS d_date_inscr,
                    pga.adr_form AS adr_form,
                    p.id_adr AS id_adr,
                    p.id AS id
                FROM 
                    ev_dossiers d,
                    ro_b75 p,
                    pg_adresses pga
                WHERE 
                    d.id_dossiers = ".$this->getIdDossier()." AND
                    d.typ_donnees = 11 AND
                    d.id_donnees = p.id AND
                    p.id_adr = pga.id_adr order by p.id, p.id_adr, p.ordre;";
        $this->prop_qry = $qry;
        $result = sybase_query($qry, $this->getLinkDB());
        $nbr = sybase_num_rows($result);
        $typos = sybase_result($result, 0, "t_typos");

        if($nbr>0)
        {
            for($cpt=0; $cpt<$nbr; $cpt++)
            {
                if($cpt===0)
                {
                    $this->setProprioNoms(utf8_encode(strtr(trim(sybase_result($result, $cpt, "nom_form")),"’","'")));
                    $this->setProprioAdresse(utf8_encode(strtr(trim(sybase_result($result, $cpt, "adr_form")),"’","'")));
                    $this->setProprioCondition($this->getConditionInscription(sybase_result($result, $cpt, "t_typos")));

// THIS IS PROBLEMATIC                       
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));
                }
                else 
                {
                    $this->setProprioNoms(", ".utf8_encode(strtr(trim(sybase_result($result, $cpt, "nom_form")),"’","'")));
                }
            }
        }
    }   

    ...

        public function getProprioDateInscription()
    {
        return $this->prop_inscription;
    }
    private function setProprioDateInscription($date)
    {
        $this->prop_inscription = $date;
    }
}

如果我们查看我们拥有此行的行:$ this-&gt; setProprioDateInscription(sybase_result($ result,0,“d_date_inscr”));

sybase_result返回一个日期(数据库中的一切正常,值很好)。但问题出在Setter和私有var prop_inscription的Getter之间。

你能帮帮我吗?你知道问题出在哪里吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

要解决此问题,

juste更改此行

// THIS IS PROBLEMATIC                       
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));

$this->setProprioDateInscription(utf8_encode(strtr(trim(sybase_result($result, $cpt,"d_date_inscr")),"’","'")));