[英]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名稱空間時,我解決了
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
關鍵字用於變量聲明。 如果您分配一個“簡單”值(例如字符串或數組),它將起作用。
您的示例的問題在於, new PDO(<arguments>)
是一個表達式,其中var
運算符不是正確的選擇。 因此,您要分配一個值。
變量默認是不可變的。 (請參閱zephir-lang.com)
這就是為什么需要使用let
運算符的原因,這使它們不可變並能夠解析表達式。
所以你需要使用var
並let
像var dbh; let dbh = new \\PDO(<arguments>);
var dbh; let dbh = new \\PDO(<arguments>);
如果您采用這種方式,它就會起作用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.