2

Zephir を使った実験の一環として、現在 PHP PDO を使用して MySQL データベースにアクセスしようとしています。まず第一に、私は比較的無害であることがわかりました

$dbh = new PDO("mysql:host=localhost;dbname=dbn;","user","pwd");

Zephirで翻訳して使用する場合

var dbh = new PDO("mysql:host=localhost;dbname=dbn;","user","pwd");

Zephir が例外をスローしていた

var dbh = new PDO
------------^

私が解決したいくつかの検索によって、これは - new は Zephir の予約語であり、$new に置き換える必要があります。

var dbh = $new PDO("mysql:host=localhost;dbname=dbn;","user","pwd");

すぐに生産した

var dbh = $new PDO(
-----------------^

ZephirにPDO名前空間を使用するよう明示的に指示する必要があることに気付いたときに解決しました

use \PDO;
var dbh = $new \PDO::PDO(

今、

var dbh = $new \PDO::PDO("mysql:host=localhost;dbname=dbn","user","pwd");

私は得る

var dbh = $new \PDO::PDO(...,"user","pwd");
---------------------------------------------^

これは私にはほとんど意味がありません。

私が言えることは、動作する PHP プロトタイプの完全な移植と見なすには、Zephir はまだ若すぎるということです。ただし、PHP アプリケーションのより CPU を集中的に使用するビットのいくつかを移植するのに使用するのに十分なように見えますが、ドキュメントが不足しています。たとえば、ドキュメントのどこにも、配列を使用する正しい方法が

array myArray;
 let myArray = [1,2,...];

最初のリストを見逃すと、コンパイラは変更できないと文句を言います。

私の現在の PDO の問題には、明らかに他に何か問題がありますが、それが何であるかはわかりません。助けていただければ幸いです。

4

1 に答える 1

4

varzephirのキーワードは、変数宣言用です。文字列や配列などの「単純な」値を割り当てると、機能します。

あなたの例の問題は、演算子が正しい選択ではないnew PDO(<arguments>)式であることです。varしたがって、必要なのは値を割り当てることです。

変数はデフォルトで不変です。(zephir-lang.com を参照してください)
そのため、演算子を使用する必要がありますlet。これにより、演算子が不変になり、式を解決できるようになります。

varしたがって、使用してlet
好きにする必要がありますvar dbh; let dbh = new \PDO(<arguments>);

そして、あなたがそのようにすれば、うまくいきます:)

于 2015-02-16T17:02:24.407 に答える