phalconの3.4バージョンから4.0バージョンへのアップグレードの互換性のない変更の概要

2640 ワード

2009-11-22日にphalconが4.0公式版を発表した.具体的な変化は参考になる.https://github.com/phalcon/cphalcon/releases
説明:4.0をインストール前にpsr拡張子をインストールphp.iniに導入されたpsr.phalconでsoの前に導入された例:
extension=psr.so
extension=phalcon.so

付属macの下にphp 7として取り付ける.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処理クラスがPhalconMvcUrlからPhalconUrlに変化
バージョン4.0以前の導入方法は、use PhalconMvcUrl;
4.0から導入する方法は、use PhalconUrl;
 
変化3
モデル操作方法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
その他の変化はまだ続々と体験中で、補充しなければなりません...