Я очень новичок в php-конструкторах, которых я знаю из java. Но почему-то это не работает. Я следую учебнику, и я не могу получить 1
только 0
. Вот два сценария, связанные:php constructor не работает
<?php
class dbConnection{
protected $db_conn;
public $db_name = 'todo';
public $db_user = 'root';
public $db_pass = '';
public $db_host = 'localhost';
function connect(){
try{
$this->db_conn = new PDO("mysql:host=$this->db_host;db_name=$this->db_name",$this->db_user,$this->db_pass);
return $this->db_conn;
}
catch(PDOException $e)
{
return $e->getMessage();
}
}
}
?>
<?php
include_once('class.database.php');
class ManageUsers {
public $link;
public $constructed;
function ManageUsers(){
$db_connection = new dbConnection();
$this->link = $db_connection->connect();
return $this->link;
}
function registerUser($username,$password,$ip_address,$time,$date){
$query = $this->link->prepare("INSERT INTO users (username,password,ip_address,time,date) VALUES (?,?,?,?,?)");
$values = array($username,$password,$ip_address,$time,$date);
$query->execute($values);
$counts = $query->rowCount();
return $counts;
}
}
$users = new ManageUsers();
echo $users->registerUser('bob','bob','127.0.0.1','10:00','29-02-2012');
?>
Почему, по вашему мнению, ваш конструктор не работает? Для того, что это стоит, построенный $ будет иметь значение null в вашем методе распечатки, так как это локальная переменная области. Чтобы он был частью объекта, оба экземпляра должны быть $ this-> created –
. Ваш код должен запускать несколько сообщений об ошибках. Я думаю, вы не настроили PHP для отображения сообщений об ошибках и кодирования вслепую. Это то, что вам нужно исправить, прежде чем идти дальше; невозможно правильно закодировать код без помощи сообщений об ошибках. Вот краткое объяснение (http://stackoverflow.com/a/5680885/13508). –
И, что касается обработки ошибок, вы не должны использовать конструкцию 'try/catch' для исключения исключений для простых строк. Это верно и в Java. –