2011-03-09 106 views
1

我正在构建类似于Facebook的社交网络类型网站。我使用PHP,JavaScript,jQuery,MySQL,Memcache和APC。我之前已经使用PHP构建了社交网络,他们是非常复杂和庞大的应用程序(用户系统,论坛,博客,配置文件,虚拟货币,货币存储,消息传递以及更多功能/部分/模块,但都在程序式编码,我花了一年时间研究PHP面向对象的OO,现在我对PHP的OO有了更好的理解(很多感谢Stackoverflow)。之前,我对类和对象以及如何使用或创建它们一无所知。如何在PHP中使用MVC设计完成社交网络?

好的回到问题,我打算建立自己的框架或更好地说,这个项目的代码库“,然后我可以在将来使用它,如果需要的话。我不想使用现有的框架,我宁愿建立我自己的,所以我真的可以学习如何eac方法和对象等等。正在工作。

我倾向于使用MVC模式或类似的东西。我将拥有我将称之为模块的内容。示例模块;用户或帐户,邮件/消息,论坛,博客等...每个模块几乎都会投入使用,它将与我的其他代码一起工作。所以每个模块都会有它自己的文件夹并且非常独立。 “模块/论坛/”可能有控制器+模型+视图....“modules/forums/controllers /”“modules/forums/models /”“modules/forums/views /”

这是我的基本IDEA到目前为止,它完全可以并且可能会在完成所有工作时改变一些。

我已经创建了一个路由类,它将接受要匹配的URI数组映射。实例的结果,如果我去了
www.domain.com/forums/viewtopic/id-242342/page-23

然后将II与正则表达式匹配的数组会给我这样的事情...

$uri['module'] = 'forums'; 
$uri['method'] = 'viewtopic'; 
$uri['id'] = '242342'; 
$uri['paging'] = '23'; 

然后,我可以使用该数组来构建或调用该页面的相应内容。

我正在考虑使用一个简单的模板/视图类包括,将有HTML和PHP混合视图文件,但没有真正的logig除了if/else语句,的foreach,变量等

当我真正的问题或者我没有完全理解......这种MVC类型模式似乎适用于简单的页面,例如博客,我可以让MVC显示博客文章或博客列表,但是更复杂的页面就像你会看到的在Facebook这样的网站中,一个博客页面可能不仅仅是博客内容,它可能包含广告块,朋友块等,以及其他网页上的内容,对于网站使用MVC和视图/模板是一个坏主意像那样?我注意到所有的社交网站,包括脸书,没有一个似乎使用这个系统,他们都有单独的页面来构建页面,例如,邮件/消息将在messages.php上,而不是通过1个文件路由的所有内容。

我希望这个问题/帖子对某人有意义,有人可以提供一些见解,谢谢你的时间和任何建议/提示/建议!

+0

当你完成这个项目后,你会用一个预先制定的框架来投入一美元;) – 2011-03-09 23:42:13

+1

@Byron Whitlock我怀疑它,我的目标/梦想是建立我自己几年,然后改进它一遍又一遍地尽我所能,对我来说没有其他的成就感。但是,如果我切换到现有的,我至少很可能知道如何更好地使用它 – JasonDavis 2011-03-10 00:16:47

回答

1

我会使用一个现有的框架,但是如果你坚持创建自己的,请看看这个article关于如何编写自己的PHP MVC框架。它的内容非常丰富,向您展示了如何克服与此类任务相关的一些挑战。

至于MVC作为复杂网页的设计模式的功能和能力,Stackoverflow使用ASP。NET MVC 3,因为它是WebFramework(ref)。 Nuff说。