簡體   English   中英

如何在Phalcon PHP內部設置新類?

[英]How do I set up a new class in the Phalcon PHP internals?

我決定通過制作一個簡單的驗證器讓我的腳在Phalcon內部弄濕。 我幾乎逐字地遵循了其他驗證器的定義。 這就是我在phalcon.c和phalcon.h中所擁有的:

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

我錯過了什么?

還需要將方法(函數)原型添加到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

暫無
暫無

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

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