2010-08-24 75 views
2

我一直在为PHP/MySQL编写大量代码。到目前为止,所有程序都使用功能来实现多次/地点的功能。开始发现一些网站很难管理 - 时间去OO。帮助开始使用OO PHP和MySQL

我想了解有关面向对象的PHP的MVCMySQL。我有一些在Java和MVC的经验,但从来没有任何与网络技术,即HTML/CSS/JS等。我不知道如何动态生成的HTML适合与类等

我后关于我可以从哪里开始的一些推荐。理想情况下,一些网站有从头开始的很好的例子。我现在不想使用框架,因为我发现它对你来说太过分了。一旦我理解了MVC的OO方法,我可能会更容易地使用一个框架来管理。

干杯, 埃文

+0

就以SPL和PDO看看。如果你有Java背景,这些东西可能会很熟悉。 – tamasd 2010-08-24 12:05:17

回答

2

你有很多的代码,尽管是很难改变的,它可能工作。彻底改革会让你回想一段时间,所以最好的方法是渐进式的。找到一些能够从使用对象中获益的事情,并在那里使用对象。重构,因为你可以运行测试。你可以用普通的事件流来处理这件事,事情就会成功。坦率地说,如果你认真去除冗余和重复,你会经常发现只写一个小函数的地方可能会造成凹陷。如果你经常这样做,你会发现在相同数据上工作的功能组。这将建议在哪里寻找物体。

换句话说,如果你用正确的耳朵听,代码会告诉你。

0

如果你只是想要一个良好的网上课程,也许你应该看看

http://www.lynda.com/home/DisplayCourse.aspx?lpk2=653&srchtrk=index%3A1%0Alinktypeid%3A2%0Aq%3APHP%20Object%20Oriented%0Apage%3A1%0As%3Arelevance%0Asa%3Atrue%0Aproducttypeid%3A2%0Acategory_facet%3APHP 

这当然是我的一个朋友非常有用。他在完成本教程时预定的进展非常棒。它介绍了使用PHP构建CMS和面向对象的基础知识。

+0

感谢您的链接。这看起来不错,非常详细。将不得不尝试这个程序。我发现其他CBT PHP/MySQL培训中的大部分都是非常程序化的 - 我试图摆脱这种情况。 – evo 2010-08-26 13:01:31

0

不是一个真正的答案,但太大而不能成为评论。

实际上HTML与类没有任何关系,JS和CSS与PHP,MVC和OOP完全无关。

你的代码应该产生一些数据这将是显示一种或另一种方式。你可以用一些类来渲染这些数据,但这不是那么重要的类。虽然JS和CSS通常是完全独立的文件,但直接从服务器调用浏览器,避免了您的应用程序代码(除非是动态生成的)。无论如何,你应该没有太多的关注。

尽管将典型PHP应用程序的执行方式与类层次结构绑定在一起,这仍然是一项艰巨且不平凡的任务。一旦聪明人说过一次,“如果Windows在每次用户点击之后必须重新启动,它将被完全写入不同“。

+0

感谢您的回应..目前我的代码与数据和渲染代码(html等)有关。我的php scipts在服务器上执行并根据用户输入动态生成内容。我不太关心CSS/JS,因为它们往往是坐在服务器上的静态文件,而php完全不了解它们。但很多HTML都是通过PHP生成的.. 我有很多打印“ evo 2010-08-26 13:06:46

+0

@evo严格地说,这些打印“ 2010-08-26 17:29:11

+0

其实你可以在这里找到很多关于模板的SO问题。这里是我正在使用的另一个例子,http://stackoverflow.com/questions/3140714/以及其他方法 – 2010-08-26 17:35:04

0

我认为你应该从小块开始逐步进入OOP。我的意思是你应该为经常使用的东西编写简单的类,例如处理表单,图像上传,网站消息,会话处理等。

当你习惯于编程类和对象的工作,它将是时候跳转到像重构整个“引擎”更大的东西到OOP使用mvc和其他东西。

0

欢迎来到SO。

我绝不是一个PHP专家,这里是我的思想出现在我的头顶:

与PHP的面向对象编程确实有帮助,但不太可能作为救援删除所有冗余或使你代码“整洁”。传统的PHP编码方式可以产生很好的代码。 OO有助于封装你的代码以隐藏实现并通过直接组合和/或通过继承重用其他代码。

我想说的是,真正关心的是如何将“静态”html与“动态”PHP解耦。 举例来说,不应该有很多:

echo "<h1>A title</h1"; 
echo "<p>blah blah blah..."; 

即使在条件打印。

我会说一个页面/脚本的整个业务逻辑分成几个函数,并且至少隐藏函数内部的细节。

对于您关于PHP的流行OO框架的问题,CakePHP是一个很好的问题,从Ruby on Rails中获得灵感。

+0

嗨垫, 这正是我想要避免..我有很多print “去这里”; 当您从数据库动态生成页面时,有什么好策略可以避免这种情况? – evo 2010-08-26 13:02:57

0

阅读MVC Tutorial in PHP了解什么MVC,然后开始使用MVC框架Zend的一样,CakePHP中,交响乐或笨...