Phalcon Zephir を使っていくつかの実験を行って、ライブラリの一部を PHP 拡張機能にどれだけうまく変換できるかを確認しています。
私は 2 つの PHP クラスを持っていますが、それぞれが独自のファイルで既に定義されています。
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 を使用して構築することに成功した人はいますか? もしそうなら、動作するように構築するためにどのような設定または構成オプション (または追加の手順) が必要ですか?