简单的PHP OOP语法从类方法调用变量

时间:2013-10-30 14:21:46

标签: php oop

我主要是一名设计师,并且在PHP中没有很多OOP经验,所以请善待,因为我的术语可能不完全准确。这是PHP / OOP语法,我需要最多的帮助,我已经在这里和谷歌上搜索了几次解决方案,因为我想象这将是一个非常直接的问题,但没有找到任何帮助。

我正在尝试创建一个类方法,该方法使用客户端的帐户ID从数据库中提取客户帐户数据。我想要提取大约20个变量,并且可以访问我网站上的各个页面。

这是我的类文件(classfile.php):

class Accounts{

    // Function to get client data from database.
    public function getAccount($acctId){

        require("/var/www/vhosts/aqios.com/httpdocs/00omvat/dbinfo.php");
        mysql_connect("localhost","user","password") or die();
        mysql_select_db("database") or die();

        $query = "SELECT * FROM clients WHERE id='$acctId' LIMIT 1";
        $result = mysql_query($query) or die();
        while($row = mysql_fetch_array($result)){
            $this->$firstName = $row["firstName"];
            $this->$lastName = $row["lastName"];
            $this->$address1 = $row["address1"];
            $this->$address2 = $row["address2"];
            $this->$city = $row["city"];
            $this->$state = $row["state"];
            //etc., etc.
        }

        mysql_close();
    }

}

这是我的一个页面(index.php):

include_once('classfile.php');

$acctId = 111111;
$object = new Accounts();
$object->getAccount($acctId); //Script dies unless I comment this line out.

首先,除非我注释掉最后一行,否则脚本会死掉,因此我的语法必定存在问题。但我真正需要知道的是如何调用城市或其他任何变量到我的页面?我不知道正确的语法。我无法想象它会是$ object-> getAccount($ acctId) - > $ city。我知道这是错的。我如何从这个对象中调用城市或任何其他变量?

另外,我知道我应该使用另一种方法连接到我的数据库,一旦我弄清楚了这一点,我会这样做。

提前感谢您提供任何帮助!

杰森

2 个答案:

答案 0 :(得分:1)

这是不正确的

$this->$firstName = $row["firstName"];
       ^---remove the $

应该是

$this->firstName = $row['firstName'];

后续行也一样。

答案 1 :(得分:0)

  1. 正如其他人所说,您应该使用$this->firstName代替$this->$firstName
  2. $this指的是对象,而不是方法
  3. 它可以在没有显式初始化的情况下工作,但您应该定义为更好地将所有对象字段读取为public(或private / protected和write getter方法):

      

    类帐户{

    public $firstName;
    public $lastName
    ...
    
         

    }

  4. 如果变量定义为3,您应该可以使用$object->firstName

  5. 来引用它们的值
  6. 您应该考虑将类拆分为两个 - 帐户(作为数据库代理)和帐户(作为单个帐户数据),在帐户 - > getAccount中,您将创建帐户对象并将其返回 - 但这更像是一个建筑讨论