
- 基于GPT和ZFS的FreeBSD安装 | ...
- 搭建基于VIM的Python IDE | ...
- python的logging库 | ...
- [小工具]生辰八字计算online(Ver.4) | ...
- 带OAuth的twip安装手记 | ...

原文链接:http://www.rsywx.net/wordpress/2011/07/21/external-lib-in-sf2/
分类:(未分类)
TAG:
本文被浏览了378次
著名的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 Snoopy\Snoopy(); ...
来操作。经过测试,一切正常。
【本文收录于[go4pro.org]】






评论列表
(单击此处切换显示/隐藏评论)