我正在用 Phalcon Zephir 做一些实验,看看它可以如何将我的一些库转换为 PHP 扩展。
我有两个 PHP 类,每个类都已在其自己的文件中定义:Zephir 注释非常清楚,必须如此。
trienode.zep
namespace tries;
class trienode
{
public children;
public valueNode = false;
public value = null;
public function __construct()
{
let this->children = [];
}
}
和
trie.zep
namespace tries;
class trie {
private trie;
public function __construct() {
let this->trie = new trienode();
}
}
但是每当我尝试使用编译类时zephir compile
,我都会得到
Warning: Class "trienode" does not exist at compile time in /home/vagrant/ext/tries/tries/trie.zep on 8 [nonexistent-class]
let this->trie = new trienode();
---------------------------------------^
(如果我继续构建过程并安装生成的 .so 文件,当我尝试从 PHP 脚本中使用它时会出错)
<?php
namespace tries;
$test = new trie;
给予
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/tries.so' - /usr/lib/php5/20121212/tries.so: undefined symbol: zephir_tries_trie_init in Unknown on line 0
PHP Fatal error: Class 'tries\trie' not found in /home/vagrant/triesTest.php on line 5
我浏览了 Zephir 文档和各种博客文章,但找不到任何构建包含多个类文件的扩展的示例。
有没有人成功地使用 Zephir 构建了一个包含多个类的扩展?如果是这样,构建一个有效的 so 需要哪些设置或配置选项(或其他步骤)?