【问题标题】:OOP - how much should I develop classes? [closed]OOP - 我应该开发多少课程? [关闭]
【发布时间】:2013-05-30 07:18:39
【问题描述】:

我刚刚开始使用类,过去放弃了过程式编程。 但是在我前进的过程中,我有一些疑问。

1 - 正如我在标题中所写,我应该开发多少类?

到目前为止,我所得到的是,对于网站的注册/登录部分,开发了以下类:

  • 数据访问层(几乎每个类都调用)
  • 注册(验证表格并发送带有激活码的电子邮件)
  • 用户登录
  • 激活(检查代码/使用新代码发送新电子邮件)
  • 通过恢复(检查恢复代码/使用新代码发送新电子邮件/处理新密码表单)
  • 通过加密(从寄存器调用并通过恢复并使用 bcrypt)

例如: - 在注册、激活和恢复中,我都会发送电子邮件.. 我应该创建一个“邮件”类吗? - 在注册、登录、激活、恢复中,我使用令牌和验证码……同样的问题……

你明白我在问什么吗?

2- 另一方面,我将在用户登录后创建一个会话。 我必须检索用户信息,例如:用户名、ID、信用、操作历史、广告(由用户创建和其他存储但由其他人创建的)..

我不知道如何开始。我应该创建类,例如: - 个人信息(更新) - 运营 - 学分 - 广告(一类是他创建的,另一类是他想要存储的)

我真的很困惑,我还没有找到关于如何组织每个阶段/部分的明确信息..

【问题讨论】:

  • 您的要求是什么?还是不明白你想说什么..?您打算将您的项目转移到基于 OOPS 的概念还是什么?
  • 我会有 一个 User 类与 RegisterLoginChangePasswordRecoveryEncryptPassword 函数等。是的,你应该有邮寄课程。向其中添加工厂,以便您可以使用Mail_Factory::Get()->SendEmail('a@b.com'); 发送邮件。
  • 也许你应该看看 MVC、DDD 等设计模式。
  • @h2ooooooo 这是一个答案吗?它看起来像一,闻起来像一,但绝对不是一。
  • @Prix 就我而言,OP 询问应该创建多少个课程,然后提到注册/登录作为示例。这就是我的答案指向的地方。一个可以做到这一点的类。当然,这个User 课程与运营、信用、邮件或广告无关。

标签: php class oop


【解决方案1】:

这取决于你想要做整个网站的方式。对于大型网络,有必要使用MVC 框架(ZendSymfonyYiiCakePHPSilex,各有利弊,始终取决于您的需求)。

在这些情况下,与数据库相关的任何内容都会进入模型,这会将 DBAL 留给 MVC 引擎,让您可以将数据库对象用作类。

表示层中的任何东西(即以一种或另一种方式显示信息的任何东西)都是一个视图,它只不过是一个带有一些 echo 参数调用的 HTML 文件,或者模板变量,以防你想使用像 Smarty 这样的模板系统。

任何与系统中如何完成事情有关的事情都是控制器的动作,它适合控制器,另一个类,也抽象了做事的方式。

在您想要验证输入、处理会话等的情况下,它实际上取决于您使用的框架。在我的例子中,我习惯了 Yii,它可以让你创建一个叫做组件(又是类)的东西来管理肯定会在其他项目中重用的东西。

每个类(组件、模型、控制器等)都扩展了不同的父类,因此,尽管它们都是类,但每个类都有特殊的方法,使它们在执行某些任务时更实用。

如您所见,几乎所有东西都可以是一个类,这取决于您的需求、您的框架选择和您的风格,以及如何对它们进行编码。

【讨论】:

  • 哇.. 我认为 cakephp 和其他工具可以优化/组织应用程序的任务和流程.. 但是当我学习 oop 时,我认为我应该先熟悉类的编程..
  • 学习 OOP 是使用 MVC 的第一步。当然,您应该编写一些代码,积累经验,学习语法(这样您就可以轻松发现可能的错误并扩展您自己的类),了解使用类的利弊,那么你就很好了与 MVC 一起使用。我的回答只是暗示你不需要重新考虑所有事情,因为几乎所有事情都已经完成,思考和重新思考。如果您觉得我的答案正是您想要的,别忘了接受它,点击答案投票旁边的勾号。
  • 是的,我同意。我已经暂停了几个月前正在做的事情,并开始阅读和学习课程。一切都是关于什么是类,如何开发、使用、扩展它们。但是我发现很少有关于组织的好文章。我会继续研究它,然后我会从 MVC 开始。谢谢你的时间!来自阿根廷的问候
  • 不客气,来自/desde Barcelona ;)
【解决方案2】:

如果你想应用 oop 概念,我建议你看看像 cakephp、zend 框架这样的 MVC。下载cakephphttp://cakephp.org/

【讨论】:

  • 谢谢,我已经开始研究它了..
猜你喜欢
  • 2016-07-19
  • 2013-01-10
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 2011-11-24
相关资源
最近更新 更多