簡體   English   中英

在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名稱空間時,我解決了

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運算符的原因,這使它們不可變並能夠解析表達式。

所以你需要使用varlet
var dbh; let dbh = new \\PDO(<arguments>); var dbh; let dbh = new \\PDO(<arguments>);

如果您采用這種方式,它就會起作用:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM