Я использую макрос zend_declare_class_constant_stringl
, чтобы объявить свойство константы, но я не знаю, как читать константу? код провозглашают:Как читать постоянное свойство в расширении php?
zend_declare_class_constant_stringl(myclass_ce,ZEND_STRL("WEL"),ZEND_STRL("welcome\n") TSRMLS_CC);
Я хочу использовать zend_read_property
или zend_read_static_property
читать постоянную собственность, но она не работает!
(1): Я использую zend_read_static_property
:
ZEND_METHOD(myclass,getName){
zval *name;
char *str;
zend_class_entry *ce;
ce=Z_OBJCE_P(getThis());
name=zend_read_static_property(ce,ZEND_STRL("name"),0 TSRMLS_CC);
str=Z_STRVAL_P(name);
RETURN_STRINGL(str,Z_STRLEN_P(name),1);
}
[корень @ локальный myext] # PHP -f /var/www/html/myclass.php
Notice: Undefined property: myclass::$WEL in /var/www/html/myclass.php on line 3
(null)PHP Fatal error: Access to undeclared static property: myclass::$name in /var/www/html/myclass.php on line 5
(2) Я использую zend_read_property:
ZEND_METHOD(myclass,getName){
zval *name;
char *str;
zend_class_entry *ce;
ce=Z_OBJCE_P(getThis());
name=zend_read_property(ce,getThis(),ZEND_STRL("name"),0 TSRMLS_CC);
str=Z_STRVAL_P(name);
RETURN_STRINGL(str,Z_STRLEN_P(name),1);
}
[Root @ LOCALHOST myext] # PHP -f /var/www/html/myclass.php
Notice: Undefined property: myclass::$WEL in /var/www/html/myclass.php on line 3
(null)silenceperPHP Fatal error: Access to undeclared static property: myclass::$BYE in Unknown on line 0
Говоря как * «это не работает!» * Немного неспецифично, и неясно, чего вы действительно ожидали и что произошло вместо этого. Хотите поделиться больше? – hakre