现在写 PHP,你应该知道这些
作者:网络转载 发布时间:[ 2015/10/22 16:57:03 ] 推荐标签:开发语言 PHP
4. PsySH
A runtime developer console, interactive debugger and REPL for PHP.
PsySH 类似 Python 的 IDLE 的一个 PHP 的交互运行环境。这个是我在 Laravel 中发现的,Laravel 5 的artisan tinker 的功能是通过它来实现的。Laravel 4 中用的是另外一个项目:boris。
这个主要是在平时测试一些 php 的简单的函数和特性的时候可以方便使用。遇到一些不确定的事情、比如empty 的使用等,可以用它来做些测试。
5. 一些框架和组件
框架
我比较喜欢的是 Laravel,目前公司在用的是 Yii2,我关注的有 Symfony 以及 Phalcon (C语言实现)。用什么不用什么,主要是喜好,有时候也由不得自己选择,但研究一下,多一分了解也未尝不可。
提到 Laravel 很多人都会立马想到 Ruby on Rails。我想模仿或者抄袭这都不是主要的目的,主要的目的是提供给开发者一个更好的工具。Laravel 好在它有一个不一样的路由控制(不带 Action 后缀或前缀的),有一个好用的 ORM (Eloquent),好用的模板引擎 (Blade) 亦或有一个颜值比较高的文档(社区看到的话)等等。
强大有时候也会被人诟病庞大,但这在于你需要了解自己项目的中长期规划,项目现在的大小以及未来的大小及承载。
Larval 的核心实现是一个容器(Container)以及 PHP 的反射类(ReflectionClass)(Yii 2 也是一样)。要理解这些,多看文章和文档的同时,也可以看看源码。
Symfony 2 提供了很多组件。http-kernel 和 http-foundation 在 Laravel 中也有被继承过来直接使用。它是值得了解和学习的。
CodeIgniter 是一个小巧而强大的框架。虽然 CI 并没有使用 Composer 组件的方式进行开发,但 3.0 以后的版本也加入了 Composer 的支持(这无非是多一个 vendor 的目录,引入 autoload.php)的文件。
ORM
ORM 亦或 Active Record 我觉得还是需要的。也许有人认为 PHP 是一个模板引擎、应该手写 SQL 。不要被这些话所困扰。
CodeIgniter 中 Active Record 的实现方式很轻巧,但对于 CI 本身的体量来说,已经是很好用的了。
Laravel 实现的 Eloquent 我是很喜欢的,也可以集成到别的项目中去。Symfony 2 使用的是 Doctrine ,这个项目也值得关注。Yii 2 也有自己的一套实现方式。
模板引擎
模板引擎需要做三件事情:
变量值的输出(echo),
条件判断和循环(if … else、for、foreach、while)
引入或继承自其他文件
Laravel 实现的 Blade 是一个比较轻量好用的模板引擎。不过目前并不是很好能够引入到其他框架中。十一的时候闲来无事试图将其引入到 Yii 2 中,现在还只是简单的实现,我希望后面能将 Blade 的解析部分单独抽取出来做一个轻量的实现。在 Github 上搜一下发现也有人在做同样的事情。
Yii 2 似乎更推荐用原生的 PHP 去写,不过也提供了支持 Smarty 和 Twig 的扩展。Symfony 2 则采用了 Twig。Twig 和 Symfony 以及上文提到的 php-cs-fixer 都是 SensioLabs 的作品。
Smarty 是一个古老而顽强的模板引擎。说实话我并不是太喜欢,其语法过于复杂,变量赋值这些事情都有自己的一套做法。现在的版本中更是使用 Lexer 的方式来解析文件,感觉像是用 PHP 实现了另外一种语言。项目里面还有一些太长的正则表达式、太复杂的实现,我觉得这是一件很危险很容易出错的事情。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。

sales@spasvo.com