【问题标题】:PHP: how to safely work around PHP multiple class extension limitationPHP:如何安全地解决 PHP 多类扩展限制
【发布时间】:2013-08-12 15:16:15
【问题描述】:

我有一个类(crypt)可以帮助我加密、解密。然后,另一个类(sess)用于会话启动、限制和保护页面。然后,另一个用于存储会话变量的类 (db),有时通过登录时间、注销时间、服务器引荐来源等加密。现在,有了这一切,我如何访问每个类中的三个类的不同功能,因为我只能延长一个吗? Crypt 类只是帮助加密,我几乎在所有其他类中都需要它。此外,我知道这个问题已经得到如此回答,以至于它变成了修辞,但我的主要问题是“最安全”的方法。

【问题讨论】:

标签: php class oop extends


【解决方案1】:

我这样做的方式是使用模型类,它用于调用对数据库、会话和加密类的引用,执行方法调用、取回值并处理业务逻辑,然后返回数据以供查看。

简单地说,你的网站应该是:

root
-assets
--css
--img
--js
-modules
--home_page
--register_page
--login_page
-includes
--session_class
--crypt_class
--database_class
index

去去去

【讨论】:

  • 不错的目录结构,但并没有真正解释如何从另一个类/对象中访问一个类/对象
  • 你的模块使用 "include("/includes/database_cklass.php");
  • 然后在您的模块中调用 Database->add 或您拥有的任何方法。如果该类不是静态的,则必须先初始化它,方法是 Database database = new Database();然后做数据库->添加调用
  • 如果 session_class 对象中的方法需要访问 crypt_class 中的方法,则包含文件对代码逻辑没有帮助
【解决方案2】:

我已经解决了。我使用了-CLASS db Extends Crypt,然后 CLASS Sess Extends db。有趣的是 db functiöns 在 Sess Class 中不起作用,除非我使用 :New Db;then $db->mylog () 但是对于 Crypt 类通过 Parent::encrypt().funny! 它就像跳了一步。可能是因为我在 Db 的 __construct 函数中使用了 Parent::encrypt()。它很粗糙,但我知道我没有不要破坏东西。

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2011-10-25
    • 2014-03-06
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多