我应该开始学习PHP框架吗?

5
我早就了解PHP基础和函数式编程。但是在今年的第二学期,我学习了Java面向对象编程。因此,我想将我的面向对象知识应用到PHP中。但是我发现很难想出任何合理的利用方式。这不像在Java中一切都是对象。我认为连接数据库、编写一些简单的日志记录或注册函数等以前的方式更容易。
所有这些例子只给了我语法方面的知识,没有使用方法论。
所以我开始思考。也许是因为我想在没有框架的情况下应用面向对象编程,而没有用处?如果是这样的话 - 有什么易于学习的框架推荐吗?http://php.net/manual/en/language.oop5.php

4
关于数据库:请看一下PDO。 - KingCrunch
6个回答

9

面向对象编程(OOP)是一种用于将代码组织成有意义、可重用实体的方法,但它不能单独回答“如何最好地组织代码以创建Web应用程序”的问题。

大多数Web框架都使用模型-视图-控制器(MVC)架构和OOP。为了理解Web框架的工作原理,建议您也熟悉MVC(作为起点,请参见"Coding Horror: Understanding Model-View-Controller")

此外,无论使用任何框架,在创建Web应用程序时,了解一些基本概念至关重要。至少要熟悉会话(session)的工作方式(http://www.php.net/manual/en/book.session.php),以及如何访问数据库(PDO用于通用数据库连接,MySQL用于特定于MySQL的绑定等)。

至于选择哪个Web框架,选项很多。因此,考虑以下指针作为信息来源:

  • Yii框架采用相当干净的基于面向对象编程设计(http://www.yiiframework.com/)
  • 另一个流行的面向对象PHP框架是CakePHP(http://cakephp.org/)
  • 对于一个更轻量级的框架,考虑使用CodeIgniter(http://codeigniter.com/)
  • PHP的事实上的Web框架是Zend(http://framework.zend.com/)。它非常庞大、全面、得到了良好的支持,但不总是最适合轻便旅行的搭档。
  • 也请注意,如果你按MVC组织你的代码,可能发现在不使用任何框架时最舒适
请注意,与Java不同的是,在PHP中,面向对象的特性是在版本4和5中逐渐添加的。因此,许多为早期版本PHP设计的Web框架可能无法提供您所需的清晰面向对象的设计。因此,在选择框架时,请考虑是否选择向后兼容(支持PHP4)或者寻求框架中清晰的面向对象的设计(大多数需要PHP5)。

2
很高兴看到有一个回答没有推荐个人喜欢的框架。+1 :) - cem
谢谢 :) 我还得说,令人惊讶的是,使用PHP的最佳解决方案往往不需要使用任何框架... - jsalonen
每当我遇到一个情况,感觉一个完整的框架过于臃肿时,我就会使用http://silex-project.org/。这是一个非常棒的 PHP "微型框架"。 :) - reko_t
2
此外,在学习如何“按照框架方式”进行操作之前,我建议任何人都要了解其低层级细节。我指的基本上是会话、cookie、HTTP头等概念。 - Carlos Campderrós
1
值得注意的是,PHP对类和对象的实现有些受限且有时不太符合预期(例如,父类如何在不知道子类具有该方法的情况下调用子类的方法,即如果该方法既未在父类本身中定义,也未在其父类或接口中定义)。 - binaryLV
这完全是其他100个类似问题/答案的副本。 - dynamic

2

OOP在框架之外也有其用途,你不能把苹果和橙子相比较。

最受尊敬的框架都是用OOP编写的。因此,尝试使用这样一个框架以查看OOP的用例,然后从该框架中学习(使用调试器逐步进行并从内部了解框架的工作方式)。

如果你真的想成为专业人士,我会推荐你两件事情:

  • Zend Framework - 不易学,但它将向你展示下一个要点的许多内容:
  • 一本关于设计模式的书 - 非常非常重要

关于数据库:现代PHP代码应该使用PDO

框架只会向你展示设计模式的用法以及如何组织代码,因此你将开发出对它的“常识”。

在你通过了那个点之后,你就能够发明自己的OOP世界,而不需要框架(如果这确实需要的话,尽管框架给你时间去创新)。


1

你不需要学习任何PHP框架就可以开始应用面向对象编程原则。你可以查看这个fine答案,看看没有任何框架的OOP应用。

学习一个框架肯定是一个好选择,因为你可以使用很多现成的组件。现在有很多PHP框架。你可以查看CakePHP、Zend(基于组件)、YII、Symphony(雅虎使用它)、CodeIgniter等。

希望这能帮到你。


1

首先,你不需要框架来利用 PHP 中的面向对象编程;事实上,PHP 有许多核心类使用面向对象方法。例如,请看 PDOSPL

无论如何,关于框架,有各种基于 OOP 的框架,大多遵循 MVC 模式。一些流行的框架您可能想了解:

Zend框架非常广泛,但学习曲线可能会相当陡峭,但绝对值得努力。如果你想找一个良好的入门MVC框架,我可以推荐CodeIgniter;它非常轻便易用。不幸的是,我没有Symfony或CakePHP(或其他MVC框架)的第一手经验。


-1

你应该使用框架。如果这样做,其他开发人员将更容易地编辑您的代码。

Code Igniter相当简单和基础,但您也可以查看Zend、Yii、Symphony等框架。


-2

我建议你从Codeigniter框架开始入手


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接