Estou estudando PHP, mas estou tendo um problema que não consigo solucionar de maneira nenhuma. Já fiz buscas e não achei nada que explicasse o meu caso especifico. O meu teste é composto de 6 arquivos: 'index.php': página web em si'connection.php': faz a conexão com o banco de dados'usermodel.class.php': classe modelo, apenas com as propriedades'usercontroller.class.php': faz a consulta no banco de dados e retorna um array de UserModel'userview.class.php': transforma o array[] em uma resposta para ser exibida no index.php'users.php': faz o require_once dos 4 arquivos acimaSegue abaixo o código de cada um dos arquivos index.php
<?php require_once 'php/users.php'; ?>
<!doctype html>
<html>
<head>
<title>Object Oriented Programming</title>
<meta charset="utf-8">
</head>
<body>
<h1>User List</h1>
<?php $view = new UserView; $view->getArray(); ?>
</body>
</html>
connection.php
<?php
# Configuration Lines (you can change these lines)
$server = 'localhost';
$database = 'oo';
$username = 'root';
$password = 'senha';
# Establishing the Connection (don't change nothing after this line)
$link = mysql_connect($server, $username, $password) or die("Failed to connect to the server " . $server);
$dbselect = mysql_select_db($database, $link) or die ("Unkown database " . $database);
?>
usermodel.class.php
<?php
class UserModel {
# Data Fields
private $id;
private $username;
private $email;
private $password;
# Constructor
function __construct($id, $username, $email, $password) {
$this->id = $id;
$this->username = $username;
$this->email = $email;
$this->password = $password;
}
# Properties
function __set($name, $value) {
$this->$name = $value;
}
function __get($name) {
return $this->$name;
}
}
?>
usercontroller.class.php
<?php
class UserController {
# Data Fields
private $model;
private $array;
# Constructor
function __construct() {
$this->model = new UserModel;
}
# Methods
function getArray() {
global $model, $array;
$query = "SELECT id, username, email, password FROM Users";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$model->id = $row['id'];
$model->username = $row['username'];
$model->email = $row['email'];
$model->password = $row['password'];
$array[] = $model;
}
return $array;
}
}
?>
userview.class.php
<?php
class UserView {
# Data Fields
private $controller;
# Constructor
function __construct() {
$this->controller = new UserController;
}
# Methods
function getArray() {
global $controller;
$array = $controller->getArray();
echo $array[0]->username;
}
}
?>
users.php
<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(dirname(dirname(__FILE__))));
require_once ROOT . DS . 'database' . DS . 'connection.php';
require_once ROOT . DS . 'application' . DS . 'models' . DS . 'usermodel.class.php';
require_once ROOT . DS . 'application' . DS . 'controllers' . DS . 'usercontroller.class.php';
require_once ROOT . DS . 'application' . DS . 'views' . DS . 'userview.class.php';
?>
O problema que ocorre é o seguinte, quando abro a página 'localhost/index.php', ele só exibe os elementos html e apenas até onde botei a função $view->getArray(). Segue o código fonte depois de executada a página:
view-source:localhost/index.php
<!doctype html>
<html>
<head>
<title>Object Oriented Programming</title>
<meta charset="utf-8">
</head>
<body>
<h1>User List</h1> É a primeira vez que trabalho com orientação a objetos com PHP, então é provável que seja um erro besta e talvez comum, agradeço a ajuda de vocês.