【发布时间】:2012-10-20 01:29:14
【问题描述】:
我正在开发一个 PHP MVC,但努力处理设计的某些方面,让所有用户都可以轻松访问用户信息,这真的让我很困惑。
我确实将 User 作为抽象类,因此您可以使用 User::getUserId(),但我不确定这是正确的做法吗?
我现在已将其更改为以下内容,但无法正常工作。
问题
假设我有一个基本控制器,我想在每次运行时实例化 User 类:
控制器
class controller{
public $user;
function __construct(){
$this->user = new User();
$user->sessionRefresh();
$user->getUserId();
}
}
然后我有一个实例化的用户模型类:
用户模型类
class User{
var $userId;
function sessionRefresh(){
if (isset($_SESSION['userId']) && $_SESSION['created'] + 15 * 60 < time())
session_regenerate_id();
}
function getUserId(){
$this->userId = $_SESSION['userId'];
}
}
然后我有更多的控制器来扩展默认控制器:
论坛控制器 - 非常基本,只是为了演示我正在尝试的内容
class forumcontroller extends controller{
function __construct(){
require 'templates/forum.php';
}
}
论坛模板 - 非常基本的示例
<html>
<title>Forum</title>
<body>
<div>Welcome User: <?=$user->userId;?></div>
</body>
</html>
我做错了吗?
我最近才尝试在 PHP 中实现从程序化到 mvc/oop 的飞跃,显然它仍然让我感到困惑。
【问题讨论】:
-
顺便说一句。你不能实例化一个抽象类;)
-
“我确实将 User 作为一个抽象类,所以你可以使用 User::getUserId() 但我不确定这是正确的做法吗?” ..c2.com/cgi/wiki?AbstractClass
-
你必须回应 .... userId; ?>
-
ok 没用过,在 php.net 上找不到
-
可能是 var $userId;将是私有的,你为什么不在 echo 上使用 getter 呢?
标签: php oop model-view-controller