phalcon4变化很大

在2019-11-22日phalcon官方发布了4.0正式版,具体变化可参考https://github.com/phalcon/cphalcon/releases
phalcon4变化很大 对于代码 要求更高了,标准更高了,代码更规范了

说明:安装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' => '[email protected]']);
或
$user->create(['name' => 'ligaofeng', 'email' => '[email protected]']);4.0起统一变更为用->assign方法来批量赋值,例如:

$user = new Users();
$user->assign(['name' => 'ligaofeng', 'email' => '[email protected]']);
$user->save();
或
$user->create();

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

$user = new Users();
$user->name = "ligaofeng";
$user->email = "[email protected]";
$user->save();

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



猜你喜欢

转载自blog.csdn.net/qq_25261441/article/details/121898958