2012-09-13 18 views
3

我決定通過一個簡單的驗證程序讓我的腳溼透Phalcon內部。我幾乎逐字地跟蹤了其他驗證者的定義。所以這是我在phalcon.c和phalcon.h:如何在Phalcon PHP內部建立一個新類?

phalcon.c: 
zend_class_entry *phalcon_mvc_model_validator_stringlength_ce; 
... 
PHALCON_REGISTER_CLASS_EX(Phalcon\\Mvc\\Model\\Validator, StringLength, mvc_model_validator_stringlength, "phalcon\\mvc\\model\\validator", phalcon_mvc_model_validator_stringlength_method_entry, 0); 

phalcon.h: 
extern zend_class_entry *phalcon_mvc_model_validator_stringlength_ce; 
... 
ZEND_BEGIN_ARG_INFO_EX(arginfo_phalcon_mvc_model_validator_stringlength_validate, 0, 0, 1) 
    ZEND_ARG_INFO(0, record) 
ZEND_END_ARG_INFO() 
... 
PHALCON_INIT_FUNCS(phalcon_mvc_model_validator_stringlength_method_entry){ 
    PHP_ME(Phalcon_Mvc_Model_Validator_StringLength, validate, arginfo_phalcon_mvc_model_validator_stringlength_validate, ZEND_ACC_PUBLIC) 
    PHP_FE_END 
}; 

在運行時,我得到以下警告:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/phalcon.so' - /usr/lib/php5/20090626/phalcon.so: undefined symbol: zim_Phalcon_Mvc_Model_Validator_StringLength_validate in Unknown on line 0 

我缺少什麼?

回答

2

也是它的需要來添加方法(函數)的原型來phalcon.h:

https://github.com/phalcon/cphalcon/blob/master/dev/phalcon.h#L391

添加您的.c文件的config.m4(如果你是一個Unix/Linux平臺上) :

https://github.com/phalcon/cphalcon/blob/master/dev/config.m4#L5

之後,需要一個完整的重新編譯:

phpize --clean 
export CFLAGS="-g -O2 -fno-delete-null-pointer-checks" 
phpize 
./configure --enable-phalcon 
make 
sudo make install 
+0

工作正常!謝謝! :d –