在 Zephir 中使用 PDO
Using PDO in Zephir
作为 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 名称时,我解决了这个问题 space
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 问题,显然还有其他问题,但我不知道它可能是什么。如果有任何帮助,我将不胜感激。
zephir 中的var
关键字用于变量声明。
如果您分配一个 "simple" 值,例如字符串或数组,
它会起作用。
你的例子的问题在于 new PDO(<arguments>)
是一个表达式,
其中 var
运算符不是正确的选择。
所以你想要的是赋值。
默认情况下变量是不可变的。 (参见 zephir-lang.com)
这就是为什么您需要使用 let
运算符,这使它们不可变
并且能够解析表达式。
所以你需要使用var
和let
喜欢 var dbh; let dbh = new \PDO(<arguments>);
如果你这样做,它就有效:)
作为 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 名称时,我解决了这个问题 space
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 问题,显然还有其他问题,但我不知道它可能是什么。如果有任何帮助,我将不胜感激。
zephir 中的var
关键字用于变量声明。
如果您分配一个 "simple" 值,例如字符串或数组,
它会起作用。
你的例子的问题在于 new PDO(<arguments>)
是一个表达式,
其中 var
运算符不是正确的选择。
所以你想要的是赋值。
默认情况下变量是不可变的。 (参见 zephir-lang.com)
这就是为什么您需要使用 let
运算符,这使它们不可变
并且能够解析表达式。
所以你需要使用var
和let
喜欢 var dbh; let dbh = new \PDO(<arguments>);
如果你这样做,它就有效:)