从Procedural到OO PHP。实例

时间:2010-11-27 20:24:06

标签: php object

我希望你能帮助我! =)

由于我使用PHP,我总是编写程序。为什么?答案很简单。我不知道如何使用对象等。但我想!真的...... =)我在网上搜索并找到了这个教程 - Object Oriented Programming with PHP。所以我读了它,学习了语法。给定代码进行一点点实验。我认为这是学到的!的xD

让我解释一下这个问题。例如,我想创建用户系统。之前很容易做到。我只是创建一个HTML格式的文件。用户输入用户名和密码。它发送到我验证它的另一个文件。如果一切正常,那么PHP会将新条目写入数据库。否则会创建错误。与登录相同,仅用于使用用户ID创建的入口 - 会话变量。以及如何检查用户是否已登录?只需检查会话变量。没问题。而问题来了......对象?我该怎么做?什么是对象(用户,一些验证?)?对象在哪里?等愚蠢,甚至是新手的问题... =(

每个人都能为我创造一些榜样吗?真的是新手了。我真的很想学。谢谢。 =)

P.S。对不起我的英语,这不是我的母语。 = P

3 个答案:

答案 0 :(得分:3)

这是一个极端广泛的问题。您要求我们为您提供整个应用程序核心的骨架实现! :-)

这大部分还取决于您对应用程序架构的理解。您必须创建所有这些类或使用它们的开源实现,它们不是内置于PHP中。这就是为什么大多数人使用提供大部分基础内容的框架。

但是我不建议直接使用jsumping来使用基础知识水平的框架。 ID敦促您阅读OOP模式和概念。这个article虽然陈旧,但它直接比较了从过程到OOP的过程,并引导您创建自己的基本MVC框架。如果我是你的话那么我有很多资源,所以我会谷歌。

我不知道我会在制作中使用这样的框架,但创建它并使用它制作个人应用程序的过程对于学习是非常宝贵的。在你得到一些关键概念和模式之后,我会选择一个框架,它有很多结构(在你的情况下越硬越好,因为你只是在学习)并开始使用它。

虽然我不亲自使用它,因为它不够灵活,我想我会推荐CakePHP。 Symfony可能也是一个不错的选择,但它非常复杂,如果你是OOP的新手,你可能会失去理智...同样对于Zend: - )

我还建议PHP Objects, Patterns, and Practice, Second Edition作为一般参考书。它与PoEAA类似,但特定于php实现和示例。

答案 1 :(得分:1)

作为第一步,您可以采用过程脚本并确保所有大块代码都在函数中。然后,将所有相似或相互属于的函数放在不同的文件中。例如,将所有与用户相关的函数分组到user.php中,将特定于数据库的函数分组到database.php等。如果您已经编写了一段时间的程序样式,那么您可能已经拥有了这个函数。

现在第一步是将这些文件转换为类:

使新的user.php包含一个空类'user'。现在,将所有用户函数复制到此类中(因此它们成为方法)。

示例:


function authenticate()
{
  // auth
}
function createUser()
{
  // create new user
}


class person
{
  public function __construct()
  {
    // create new user
  }
  public function authenticate()
  {
    // auth
  }
}

如果对所有功能组执行此操作,最终会得到一个非常基本的面向对象程序。

实施例: 而不是致电$user = createUser('john doe');,而只是$user = new user('john doe');

我建议你这样练习,只需要一个简单的脚本即可。学习OO从开始学习。

当您完成第一个类似OO的程序时,请寻找需要改进的地方。一堂课变得太大了吗?将其拆分为多个子类。多个班级几乎一样吗?也许让他们都继承一个基类。

简而言之:刚开始这样做。它并非完全不同。想象一个班级作为一系列功能。

每当你走进一个你觉得代码出现问题的情况时,找一下OO最佳实践或示例的指南(不是专门针对PHP),有很多。

P.S。正如一些答案所指出的那样,我认为你不应该指望某人写下你应用程序的一半。只是尝试开始并发布一个问题,如果它不起作用。

答案 2 :(得分:0)

使用OOP开始并没有真正改变你描述的流程,尽管通常在页面上的大部分逻辑现在都在对象内部。

因此,您的用户类可能存在一个构造函数,如果给出了id,则可以从数据库中获取用户,编辑和保存选项。只需开始创建用户类并考虑您想要在类中调用的有用方法。

您可能还想开始阅读有关设计模式的内容,这可能会帮助您制作课程。您可能想要创建的第一个类是一个可以为您提供数据库连接的类,这可以通过单例模式轻松完成。开始阅读那个非常基本的东西,非常有用。