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' => '[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();

關於assign的其它用法參考https://docs.phalcon.io/4.0/en/api/phalcon_mvc#mvc-model

其它變化還在陸續體驗中,待補充...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章