0

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

我正在尝试创建一个类方法,该方法使用客户的帐户 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。我知道那是错误的。我如何从这个对象中调用城市或任何其他变量?

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

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

杰森

4

2 回答 2

1

这是不正确的

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

它应该是

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

后续行也是如此。

于 2013-10-30T14:28:28.737 回答
0
  1. 正如其他人所提到的,您应该使用$this->firstName而不是$this->$firstName
  2. $this指的是对象,而不是方法
  3. 它可以在没有显式初始化的情况下工作,但您应该将所有对象字段定义为公共(或私有/受保护并编写 getter 方法)以更好地读取:

    类帐户{

    public $firstName;
    public $lastName
    ...
    

    }

  4. 使用 3 中定义的变量,您应该能够使用$object->firstName

  5. 您可能应该考虑将类分为两个 - Accounts(作为数据库代理)和 Account(作为单个帐户数据),在 Accounts->getAccount 中,您将创建 Account 对象并返回它 - 但这更多是架构讨论
于 2013-10-30T18:26:19.817 回答