Phalcon+developerTools安装实践
一、安装
a、下载编译
git clone --depth=1 git://github.com/phalcon/cphalcon.git //git也要有哦~
cd cphalcon/build
sudo ./install //这步的./install其实是默认包含了phpize,configure,make,make install命令。如果调不到见备注
b、修改php.ini
extension=phalcon.so //完成后重启nginx和php-fpm ,mac下比较麻烦,php-fpm没有专门命令重启,需要重启电脑。nginx可以。
developer tools :实际上就是脚手架,自动生成代码用的。与yii下的自动生成代码差不多,但,它这个挺烦。
手册上讲安装方法,针对三个平台,win、linux、mac,每个平台down不同文件。奶奶的,mac下那个文件根本就是空的,linux下developer tools,在linux本身下,安装success,可是用不了,告诉我phalcon没安装成功,使用不了,可是明明phpinfo里面可以看到phalcon了。一气不搞了,然后我无意放在mac下使用,却有效了~
mac下,
git clone git://github.com/phalcon/phalcon-devtools.git
cd phalcon-devtools
. ./phalcon.sh //这边要注意,先一个点号,然后空格,再一个点号
完成。这个本该是linux下安装devtools的方法,结果mac下有效了~诶~
三、做一个小项目
四、phalcon的闪光点
a、依赖注入:
做的相当棒,解释的也相当好。创建一个组件SomeComponent,这个组件提供的服务,都是单独抽离出来,比如register数据库连接、注册filter过滤、注册session等等。如果就只是这样,那声明somecomponet对象时,就需要人工判断需要哪些,希望应用程序加载哪些,不加载哪些,显然这是不合理的。
那如何实现,智能添加需要的服务,屏蔽当前用不到的服务呢?首先,显然上面的somecomponent承担了一个容器的功能,各个服务去注册,这很好但并不高效。
我们希望的是,当前不需要的服务,不要添加。此时,创新的思维出来了。在组件容器和服务之间,提供一个中间层,这个中间层同样承担容器功能,叫DI(dependency injected)依赖注入。所有服务注册全部放入DI容器对象的construct中,然后把DI作为一个参数对象,放在声明somecomponent组件对象中。组件对象在调用需要的服务时,实际调用DI的对象去实现。greate~ 聪明,这样做,使得,用户操作someComponent对象去执行某个服务时,只会调用DI中,针对该服务生成的对象。其他在DI中注册的服务,并不会new出一个对象。这样节省了很多资源。实现了,要啥只生成啥,绝不载入无用的类文件。
b、view里的partial
<?php echo $this->partial('index/banner'); ?>,在总视图layout中,引入头部视图,本以为与Yii类似,激活一个widget,后来发现不是,它不调用action,只调用对应的view,神奇,因此在bannerAction里面任何参数都无效,也无法echo出任何东西,甚至你删掉bannerAction都不影响。如果你想要一个参数,全局都可以调用,比如,welcom,***用户名,或者当前action name,可以考虑放在ControllerBase下的beforeExecuteRoute函数里面。如果只是某个action下的参数,可以直接在对于action下使用,如indexAction下 $this->view->setVar("msg", $msg);
举个例子:
过去:你 出去要带 +现金 +信用卡
现在: 你 --------钱包-----------现金+信用卡
在你需要现金时,直接用现金,与信用卡无关,在你取钱时,又与现金有无关。你只要操作钱包即可。
//Using an anonymous function, the instance will lazy loaded //懒加载 $di->set("request", function(){ return new Phalcon\Http\Request(); });
di作为applications的属性加入构造对象,典型的组合模式,这样application父类models下的子类都可以获得getDI(),然后使用DI服务~
备注:
sudo apt-get install php5-dev libpcre3-dev gcc make git //要检查这些是否已经安装好
phalcon在nginx、apache、wamp下的配置:
https://www.digitalocean.com/community/tutorials/how-to-install-and-get-started-with-phalcon-on-an-ubuntu-12-04-vps //安装phalcon
http://phalcon.5iunix.net/reference/nginx.html //nginx下的
http://phalcon.5iunix.net/reference/apache.html //apache下的
http://phalcon.5iunix.net/reference/wamp.html //wamp下的
2、解构技能,找出实现80%效果的那20%
3、不要一心二用
4、练习练习再练习!然后获得即时反馈
5、坚持,不要在低谷期放弃