php oop,多个文件中的类

时间:2012-02-09 10:11:38

标签: php oop class

我为我的客户编写“简单”文件管理器。 注册用户可以上传文件并查看以前上传的文件,管理员可以分别操作上传。文件存储在文件系统中,但其他信息存储在MySQL中。

我已经完成了主数据库设置类(db_settings),它具有数据库用户名和密码等属性。

第二个类用于用户身份验证,此类扩展db_settings类。 该类有一个属性,即用户对象(属性:用户名,语言等)。

用户登录后,在第二个类中创建新的用户对象。

用户界面是一个页面,它通过url参数加载并包含所需的子页面。

根据当前页面将子页面与html / php-page和classfile结合使用。

当用户上传文件并点击“上传文件”时,上传页面(page_upload.php)会包含在主页面中,然后上传类会包含在同一页面中(include_once'class_upload.php')。

第二个类在class_upload.php上进行了扩展,因此可以在每个子类上访问顶级方法。

问题是当用户在子页面(即上传页面)上时未填充用户对象,因此这些属性不可用。

如何从子页面访问用户对象属性?

我想将课程保存在单独的文件中,并且不想使用自动加载器。

3 个答案:

答案 0 :(得分:0)

听起来你需要一个像codeigniter或kohana这样的简单框架。 如果您不想这样做,请创建一种注册表,其中包含您确定需要的所有内容。然后在您使用的每个文件中包含此注册表类。自动加载器并不是那么糟糕......

答案 1 :(得分:0)

没有任何实际代码,这有点难以通过。

但是,我可以给你这个建议。扩展课程的方式是一种不好的做法。不要扩展类,因为在当前类中使用某些方法是“方便的”。

在主“bootstrap”或“index”页面上,只需包含几个类文件并实例化几个对象。

您的“UploadPage”类可以在构造函数中接收DbSettings和Auhtentication类。

希望你不要这么做,但是你可能最好先使用一个框架,看看他们是如何做的。它可能会为您提供更好的设计灵感。

“我不想使用自动加载器”的要求对我来说似乎很奇怪,但幸运的是,您可以轻松地手动包含类。

答案 2 :(得分:0)

最初的几点说明:

  

第二个类用于用户身份验证,此类扩展   db_settings类。该类有一个属性user对象   (属性:用户名,语言等)。

为什么这个课程会扩展db_settings,不应该只是使用吗?

  

用户界面是一个页面,它通过url参数加载并包含所需的子页面。

我希望您正在验证页面参数(针对错误的输入,例如:http://my.code.com/file.txt../index(递归包含自身),...)。

回答问题:

你可能需要根据你的需要在$_SESSIONserialized或者__sleep() and __wakeup() methods或者简单地存储对象...当存储到文件时它会被序列化,所以你可能需要看看在session_start())。

在致电{{3}}之前不要忘记include 'class_user.php',这样可以正确初始化对象。