Dan*_*yle 5 php database class function
根据我读到的内容,我收到了混合回复,
我已经定义了一个包含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);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
Ja͢*_*͢ck 11
这个块:
var $username="my_username";
var $servername="localhost";
var $database="my_DB";
var $password="An_Awesome_Password";
var $con;
Run Code Online (Sandbox Code Playgroud)
应该来到之前function(),而不是在里面; 但仍在class定义范围内.
添加明确的可见性是一种很好的形式; 私人开始:
class database {
private $username="my_username";
private $servername="localhost";
// etc. etc.
Run Code Online (Sandbox Code Playgroud)
然后,函数将它们称为:
$this->username;
$this->con;
etc.
Run Code Online (Sandbox Code Playgroud)
理想情况下,您希望将这些凭据传递给构造函数:
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;
}
Run Code Online (Sandbox Code Playgroud)
更理想的是,了解PDO