У меня возникает странная ошибка при создании объектов. Пока я создаю объекты в хронологических заказах, как классифицированные, это идет хорошо. Но когда я изменяю порядок или создание объекта, он дает ошибку.Должны ли объекты создаваться в хронологическом порядке по определению класса?
классов я использую следующие:
<?php
class dbClass{
private $dbHost, $dbUser, $dbPass, $dbName, $connection;
function __construct(){
require_once("system/configuration.php");
$this->dbHost = $database_host;
$this->dbUser = $database_username;
$this->dbPass = $database_password;
$this->dbName = $database_name;
}
function __destruct(){
if(!$this->connection){
} else{
mysql_close($this->connection);
}
}
function mysqlConnect(){
$this->connection = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass) or die("MySQL connection failed!");
mysql_select_db($this->dbName,$this->connection);
}
function mysqlClose(){
if(!$this->connection){
} else{
mysql_close($this->connection);
}
}
}
class siteInfo{
private $wTitle, $wName, $wUrl;
function __construct(){
require_once("system/configuration.php");
$this->wTitle = $website_title;
$this->wName = $website_name;
$this->wUrl = $website_url;
}
function __destruct(){
}
function showInfo($keyword){
if($keyword=="wTitle"){
return $this->wTitle;
}
if($keyword=="wName"){
return $this->wName;
}
if($keyword=="wUrl"){
return $this->wUrl;
}
}
}
?>
Проблема заключается в том, когда я создаю объекты в следующем порядке, он прекрасно работает:
include("system/systemClass.php");
$dbConnection = new dbClass();
$dbConnection -> mysqlConnect();
$siteInfo = new siteInfo();
Но если изменить порядок до
include("system/systemClass.php");
$siteInfo = new siteInfo();
$dbConnection = new dbClass();
$dbConnection -> mysqlConnect();
Это дает ошибку! Warning: mysql_connect() [function.mysql-connect]: Access denied for user '#####'@'localhost' (using password: NO) in /home/#####/public_html/#####/system/systemClass.php on line 19 MySQL connection failed!
Я думаю, что sitInfo содержит информацию из базы данных, соединение которой еще не выполнено, после чего вызывается mysqlConnect. –
Функции 'mysql_ *' ** больше не поддерживаются ** и не должны использоваться в какой-либо новой кодовой базе. Он постепенно прекращается в пользу новых API. Вместо этого вы должны использовать [** подготовленные заявления **] (https://www.youtube.com/watch?v=nLinqtCfhKY) с помощью [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli). –
Да. Скрытое назначение переменных. Это одна из причин, почему ** плохой ** PHP-код может заставить человека хотеть умереть ... – ppeterka