【发布时间】:2014-01-20 14:47:48
【问题描述】:
我对课程很陌生。
我正在使用 PDO 连接,到目前为止一切正常。我可以登录/注销,在屏幕上显示用户信息。所有更新插入等所有工作。在我继续之前,我对我的网站的结构有一个一般性的询问。
我的主要问题是,
将我需要的变量传递给我调用的方法会更好吗(大多数使用 user_id,所以我会在大多数方法调用中调用 $user -> user_id),但是我应该如何联系外部方法比如来自 $user 对象的方法?
或者在创建新的 $task 对象时传递 $user 对象更好?
代码 sn-ps 和示例见下文
我不想从头开始,所以扩展 BaseModel 将是我推进这个项目的方式......
我的设置与下面类似;
//main class
class BaseModel(){
//configure db here $db
//subclasses can use as self:$db
//there is if($db doesnt exist).. to stop multiple connection threads being
//created when multiple objects are created.
}
//...and I have 2 subclasses
class User Extends BaseModel
//create new user object, confirm login details (cookie, ip etc)
//returns user object as array.
}
class Tasks Extends BaseModel
//do various cleanup tasks
}
在主脚本中,我为每个脚本创建一个新实例:
$user = new User();
$task = new Task();
如果我想调用重定向任务(PHP 的 header("Location:...) 我可以在方法调用中包含 user_id;
$task -> redirect($user -> user_id, "newloc.php")
这会将用户转发到请求的页面,并使用用户 ID 将其记录到数据库中(在开发模式下有助于消除过多的页面循环)。
显然这很简单,但是如果我想直接在 $task 类中与 $user 类进行通信呢?我发现我可以创建一个传递 $user 对象的 $task 对象;
$task = new Task($user);
在我的测试中,我发现我可以访问 $user 数据和方法(例如 $this -> user->user_id),并允许我访问其中的方法,例如;
(注意:我没有记录用户重定向。这是我能想到的最简单的例子);
$task -> redirect("newurl.php");
//within redirect
public function redirect($url){
$this -> user -> increaseTotalRedirects();
系统显然比这复杂得多。这篇文章中的示例实际上只是说明我的观点的一个示例
感谢您的宝贵时间。
【问题讨论】:
-
欢迎。感谢您为编写“完整”问题所做的努力。然而,您可能希望突出显示您的实际问题,并可能删除不相关的代码,以鼓励人们阅读到最后。
-
谢谢,@Zsolt Szilagy 我已将问题移至帖子顶部并明确标记。现在可以由回答者自行决定读取代码的 sn-ps。 :)