phalcon从3.4版本升级到4.0版本不兼容变化汇总

在2019-11-22日phalcon官方发布了4.0正式版,具体变化可参考https://github.com/phalcon/cphalcon/releases

说明:安装4.0前必须先安装psr扩展,且在php.ini中引入的psr.so要在phalcon.so之前引入,如:

extension=psr.so
extension=phalcon.so

附mac下安装为php7.3.12安装psr扩展的方法:

https://pecl.php.net/package/psr

# cd cd ~/Downloads/soft 
# wget https://pecl.php.net/get/psr-0.7.0.tgz
# tar zxvf psr-0.7.0.tgz
# cd psr-0.7.0
# sudo /usr/local/php7312/bin/phpize
# sudo ./configure --with-php-config=/usr/local/php7312/bin/php-config
# sudo make
# sudo make install 
# sudo vim /usr/local/php7312/etc/php.ini 
extension=psr.so

PHP重启:sudo kill -USR2 `cat /usr/local/php7312/var/run/php-fpm.pid`

在从3.4.5升级到4.0过程中发现一些调用方法或写法发生了变化,现陆续汇总在此。

变化一

4.0之前:

try {
    $application = new Application($di);
    echo $application->handle()->getContent();
    //或
    // $response = $application->handle();
    // $response->send();
} catch (Exception $e) {
    echo "Exception: ", $e->getMessage();
}

如果在4.0中还按照上面的写法会报:

Exception: Wrong number of parameters
或
Fatal error: Uncaught BadMethodCallException: Wrong number of parameters in

在4.0中正确写法为:

$application = new Application($di);
try {
    $request = new Phalcon\Http\Request();
    $response = $application->handle($request->getURI());
    $response->send();
} catch (Exception $e) {
    echo "Exception: ", $e->getMessage();
}

变化二

Url处理类从Phalcon\Mvc\Url变化为Phalcon\Url 

在4.0版本以前引入方法为:use Phalcon\Mvc\Url;

从4.0起引入方法为:use Phalcon\Url;

 

变化三

模型操作方法save或create不再接受直接传参方式

在4.0版本之前,我们新插入一条数据的操作方法一般为:

$user = new Users();
$user->save(['name' => 'ligaofeng', 'email' => '305429518@qq.com']);
或
$user->create(['name' => 'ligaofeng', 'email' => '305429518@qq.com']);

从4.0起统一变更为用->assign方法来批量赋值,例如:

$user = new Users();
$user->assign(['name' => 'ligaofeng', 'email' => '305429518@qq.com']);
$user->save();
或
$user->create();

当然类似下面这样一一赋值的写法在4.0中依旧兼容:

$user = new Users();
$user->name = "ligaofeng";
$user->email = "305429518@qq.com";
$user->save();

关于assign的其它用法参考https://docs.phalcon.io/4.0/en/api/phalcon_mvc#mvc-model

其它变化还在陆续体验中,待补充...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Phalcon 中文文档 一般都是直接看英文资料,大都能看得懂。但看到Phalcon框架如此优秀,在学习后就想和大家分享,但发现国内的人几乎没有使用的,故想翻译一下,一旦翻译才发现读懂和译出一篇好文章真的不太一样。 故前一期翻译的部分章节有点生硬,等有空的时候再回头重译吧,后面的一部分也是以英文文档为基础,但并不再是逐句翻译了。 09年左右,大量的框架出现,我看过的框架不下20种,最先看到的可能就是php.MVC了,这是一个按照struts 1x编写的,只不过同时加载的类库太多了,效率不高而且不太完善。 后来稍有名的包括 cakephp, Symfony, Akelos, Prado, Kohana等,最近几年流行的就是 zf, yii, ci等,当然还有国内几个比较有名的框架,如fleaphp, thinkphp等。 在上面的一些框架中,我比较感冒的还是ci,yii,thinkphp等。ci,thinkphp够简单,速度也不错。yii是生活在国外的华人开发,功能够全而强大,速度也不错,国内的应用也不少。 一直不太喜欢zf,记得几年前就和同行朋友聊天的时候说,像ZEND公司完全可以用C语言开发出一个扩展来,这样效率会高得多,为毛非得用PHP开发呢,事实被我验证了,但开发扩展的不是ZEND公司,而是国内一个PHP大鸟,人称鸟哥。这个框架就是非常出名的YAF,因此YAF扩展是我必装的扩展之一。同时这也是我发现的第一个C语言写的扩展框架。 但YAF的缺点是,功能非常不完善,在我看来只是简单实现了MVC结构及路由,分发等功能,像一些ORM之类的功能完全没有开发,作者好像也没有开发的意思:) 后来就发现了Phalcon,一看文档就爱上了她,功能,速度等都是我想要的,我花了一周时间看文档学习她,并在一个下午的过程中,发现了文档中的三个错误并提交了这些错误:),我决定为完善它也贡献一点自己的力量。 本文档的中文地址存放在 http://phalcon.5iunix.net Github上的地址为: https://github.com/netstu/phalcondocs ,您如果发现有些地方译的有些操蛋,烦请你fork它,并完善她。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值