作为我对 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");
---------------------------------------------^
这对我来说毫无意义。
据我所知,Zephir 还太年轻,不能考虑完整移植一个工作 PHP 原型。但是,它看起来足以用于移植 PHP 应用程序的一些 CPU 密集型位,但缺少它的文档。例如,文档中没有任何地方说明使用数组的正确方法是
array myArray;
let myArray = [1,2,...];
错过第一个列表,编译器抱怨无法变异。
对于我当前的 PDO 问题,显然还有其他问题,但我不知道它可能是什么。我非常感谢任何帮助。