首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在php中定义类的属性?

如何在php中定义类的属性?
EN

Stack Overflow用户
提问于 2012-06-14 13:38:29
回答 6查看 22.5K关注 0票数 6

我收到了不同的回应,这取决于我读到的演练,

我已经定义了一个有2个函数的类。

我希望这两个函数都可以访问数据库凭据

目前,除非我将变量复制并粘贴到每个函数中,否则此代码不起作用。

我在这里做错了什么?

代码语言:javascript
运行
AI代码解释
复制
<?php
class database  {
function connect()  {
var $username="my_username";
var $servername="localhost";
var $database="my_DB";
var $password="An_Awesome_Password";
var $con;
    $con = mysql_connect($servername,$username,$password);

    if (!$con)  {
    die('Could not connect: ' . mysql_error());
                }
                    }

function disconnect()   {
    $con = mysql_connect($servername,$username,$password);

    if (!$con)  {
    die('Could not connect: ' . mysql_error());
                }
    mysql_close($con);
                        }
            }
?>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-06-14 13:40:31

此区块:

代码语言:javascript
运行
AI代码解释
复制
var $username="my_username";
var $servername="localhost";
var $database="my_DB";
var $password="An_Awesome_Password";
var $con;

应该在function()之前,而不是在它内部;但仍然在class定义内部。

这是添加显式可见性的好形式;一开始是私有的:

代码语言:javascript
运行
AI代码解释
复制
class database  {
    private $username="my_username";
    private $servername="localhost";
    // etc. etc.

然后,这些函数将它们引用为:

代码语言:javascript
运行
AI代码解释
复制
$this->username;
$this->con;
etc.

理想情况下,您希望由构造函数传入这些凭据:

代码语言:javascript
运行
AI代码解释
复制
private $servername;
private $database;
private $username;
private $password;
private $con;

function __construct($host, $user, $password, $dbname)
{
    $this->servername = $host;
    $this->username = $user;
    $this->password = $password;
    $this->database = $dbname;
}

更理想的情况是,了解PDO

票数 12
EN

Stack Overflow用户

发布于 2012-06-14 13:39:59

要访问对象属性,需要使用$this-> property _name

代码语言:javascript
运行
AI代码解释
复制
 $this->con = mysql_connect($this->servername,$this->username,$this->password);

类代码应该是这样的:

代码语言:javascript
运行
AI代码解释
复制
<?php
class database  {
    var $username="my_username";
    var $servername="localhost";
    var $database="my_DB";
    var $password="An_Awesome_Password";
    var $con;

    function connect()  {

        $this->con = mysql_connect($this->servername,$this->username,$this->password);

        if (!$this->con)  {
            die('Could not connect: ' . mysql_error());
        }
    }

    function disconnect()   {
        $this->con = mysql_connect($this->servername,$this->username,$this->password);

        if (!$this->con)  {
            die('Could not connect: ' . mysql_error());
        }
        mysql_close($this->con);
    }
}
?>
票数 3
EN

Stack Overflow用户

发布于 2012-06-14 13:41:14

抛开代码样式不谈,您需要在类方法之外定义变量,但仍然需要在类内部定义变量。类似于:

代码语言:javascript
运行
AI代码解释
复制
class database {
    var $username = "my_username";
    // etc.

    function connect() {
        // connect code
        // $this->username == "my_username"
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11034330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档