【问题标题】:How to define a private variable in a PHP class and use it in its methods如何在 PHP 类中定义私有变量并在其方法中使用它
【发布时间】:2017-06-27 19:17:22
【问题描述】:

我在 PHP 中编写了一个类,以便访问 Mysql 并对其进行一些操作。但是,我不知道如何为数据库连接定义一个私有变量,这样我就不需要在我的每个方法中定义它现在,我在每个方法中定义了连接,并且知道这不是正确的方法。请查看我的代码并告诉我如何优化它。请注意构造方法。

class SimpleClass
{

var $data = array();
var $db=0;

 function SimpleClass(){

   $this->$db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
   $this->$db->connect();
 }

public function test()
{

   $db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
   $db->connect();

   $q="SELECT * FROM `tbl_test`;";
   $rows = $db->query($q);

            while ($record = $db->fetch_array($rows)) {
          //...........codes
                }
  }
}

【问题讨论】:

  • 你快到了。你只需要注意不要混淆$this->db(你想要的对象属性)和$db(对象方法的局部范围内的一些变量,在这里没有帮助)。
  • 除此之外:您似乎正在遵循一个真的过时的教程...在 php 类中 cunstructor 方法被命名为__construct(),类名没有被使用过更多的年龄......
  • 还要注意应该是$this->db,而不是$this->$db...
  • 您正在阅读一个非常古老的教程 (PHP4)。
  • 在你走这条路之前,尤其是如果你使用过时的材料,请查看现代 ORM,如 DoctrinePropel 或 @987654323 @。他们可能已经做了你想做的事。

标签: php mysql class


【解决方案1】:
class SimpleClass
{

    private $db;

    function SimpleClass(){

        $this->db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
        $this->db->connect();
    }

    public function test()
    {


        $q="SELECT * FROM `tbl_test`;";
        $rows = $this->db->query($q);

        while ($record = $this->db->fetch_array($rows)) {
            //...........codes
        }
    }
}

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
【解决方案2】:
    private $data = array();
    private $db=0;

访问这些字段是这样的:

    $this->db = 5;

注意db前面缺少的$!

对于所有其他成员函数,在变量前加上 $this-> 并删除变量的 $ 符号!

您还应该使用相同的 $this->FUNCTION_NAME 模式调用成员函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2014-12-05
    • 2022-11-15
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多