2010-11-27 61 views
1

我希望你能帮助我! =)从程序到OO PHP。现场示例

由于我使用PHP,我总是编程过程。为什么?答案很简单。我不知道如何处理对象等。但我想!真的...... =)我搜索网络,发现这个教程 - Object Oriented Programming with PHP。所以我读了它,学习了语法。给定代码的一点点实验。我把它算作学到了! xD

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

大家能为我创造一点的例子吗?真的在这个新手。我真的想学习,谢谢。=)

附:对不起,我的英文不是我的母语。 = P

回答

3

这是一个极为宽泛的问题。你问我们要给你一个整个应用程序核心的框架实现! :-)

大部分这也取决于你想如何你的应用程序的体系结构。您必须创建所有这些类或使用它们的开放源码实现,它们不是内置于PHP。这就是为什么大多数人使用提供大部分这些基本内容的框架。

但是,我不会推荐直接使用基础知识的框架。 ID敦促您阅读OOP模式和概念。旧版本提供了从过程到OOP的直接比较,并引导您创建自己的基本MVC框架。 Ther有很多类似于此的资源,所以如果我是你的话,我会选择Google。

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

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

我也推荐PHP Objects, Patterns, and Practice, Second Edition作为一般参考书。它类似于PoEAA,但特定于php的实现和示例。

0

开始使用OOP并不能真正改变流程描述,尽管通常在页面上的大多数逻辑现在都在对象内。

所以你的用户类可以存在一个构造函数,如果给出了一个id,编辑和保存选项,它将从数据库中获取用户。只需开始制作一个用户类并考虑想要在课堂内调用的有用方法即可。

您可能还想开始阅读一些关于设计模式的内容,这可能会帮助您制作课程。你可能想要创建的第一个类是一个可以给你数据库连接的类,这可以通过单例模式很容易地完成。开始阅读关于那个非常基本的知识,并且非常有用。

1

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

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

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

例子:


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.正如一些答案指出的那样,我认为你不应该指望有人写你的应用程序的一半。只是尝试做一个开始,并发布一个问题,如果它不工作。