我收到了不同的回应,这取决于我读到的演练,
我已经定义了一个有2个函数的类。
我希望这两个函数都可以访问数据库凭据
目前,除非我将变量复制并粘贴到每个函数中,否则此代码不起作用。
我在这里做错了什么?
<?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);
}
}
?>
发布于 2012-06-14 13:40:31
此区块:
var $username="my_username";
var $servername="localhost";
var $database="my_DB";
var $password="An_Awesome_Password";
var $con;
应该在function()
之前,而不是在它内部;但仍然在class
定义内部。
这是添加显式可见性的好形式;一开始是私有的:
class database {
private $username="my_username";
private $servername="localhost";
// etc. etc.
然后,这些函数将它们引用为:
$this->username;
$this->con;
etc.
理想情况下,您希望由构造函数传入这些凭据:
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
发布于 2012-06-14 13:39:59
要访问对象属性,需要使用$this-> property _name
$this->con = mysql_connect($this->servername,$this->username,$this->password);
类代码应该是这样的:
<?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);
}
}
?>
发布于 2012-06-14 13:41:14
抛开代码样式不谈,您需要在类方法之外定义变量,但仍然需要在类内部定义变量。类似于:
class database {
var $username = "my_username";
// etc.
function connect() {
// connect code
// $this->username == "my_username"
}
}
https://stackoverflow.com/questions/11034330
复制