著名的PHP框架Symfony 2已经出到RC4,距离正式版本只有一步之遥。我也赶时髦安装了一下,用来改造我的任氏有无轩。
SF2完全基于PHP 5.3开发,要求运行时的支持环境也是PHP5.3以上。目前我的虚拟主机还不支持PHP 5.3,不过个人认为应该快了。所以使用SF2改造我的站点也算是未雨绸缪吧。
SF2 RC4的标准版本安装已经很完整了,激活了很多第三方库,例如Monolog库,Doctrine库等。但是在实际使用中,我们一般还是会用到更多的库,比如我现在的计划中就要使用Snoopy这个浏览器模拟库,用它来抓取我的饭否话唠记录。
Symfony 1.X中,这个过程比较简单。我虽然没有测试,但是根据1.X的教程,只要将需要的库放到lib目录下即可。但是在SF2中没有那么直接。
经过一番折腾,我终于搞定了。
SF2基于namespace,所以所有的库都需要一个namespace。如果没有,那么可以简单的自己加一个。Snoopy库正是自己没有namespace的库:
namespace Snoopy;
class Snoopy {
...
经过这样简单的修改,Snoopy库就有了自己的namespace。这是第一步。 接下来,是将Snoopy库文件放到一个目录下去。在我的结构中,我将其放到vendor/Snoopy/src/Snoopy下。 随后,在autoload.php中,指定自动载入这个库:
$loader->registerNamespaces(array(
'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
'Sensio' => __DIR__.'/../vendor/bundles',
'JMS' => __DIR__.'/../vendor/bundles',
'Doctrine\Common' => __DIR__.'/../vendor/doctrine-common/lib',
'Doctrine\DBAL' => __DIR__.'/../vendor/doctrine-dbal/lib',
'Doctrine' => __DIR__.'/../vendor/doctrine/lib',
'Monolog' => __DIR__.'/../vendor/monolog/src',
'Assetic' => __DIR__.'/../vendor/assetic/src',
'Metadata' => __DIR__.'/../vendor/metadata/src',
'Snoopy' => __DIR__.'/../vendor/Snoopy/src',
这样,在我需要生成Snoopy类的实例时,我就可以用:
use Snoopy;
class MiscController extends Controller {
public function indexAction() {
$s = NULL;
$s = new SnoopySnoopy();
...
来操作。经过测试,一切正常。
【本文收录于[go4pro.org]】
Leave a Reply to 重构“任氏有无轩”——第三天 | 生活在远方 Cancel reply