1 Star 0 Fork 21

Single / PhpExcel

forked from 张奇峰 / PhpExcel 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
PhpExcel.cpp 18.38 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
/*PhpExcel.cpp*/
#include "PhpExcel.h"
#include "zend_exceptions.h"
/*--------------------------*/
#include "libxl.h"
#include "strings.h" //strcasecmp
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
using namespace libxl;
static zend_class_entry *PhpExcel_easy_ce = NULL;
static zend_object_handlers PhpExcel_easy_handlers;
ZEND_DECLARE_MODULE_GLOBALS(PhpExcel);
//interim
typedef struct _PhpExcel_easy_object {
libxl::Book *handle;
libxl::Sheet *cursheet;
zend_object std;
}PhpExcel_easy_object;
static zend_object* PhpExcel_easy_to_zend_object(PhpExcel_easy_object *objval) {
return ((zend_object*)(objval + 1)) - 1;
}
static PhpExcel_easy_object* PhpExcel_easy_from_zend_object(zend_object *objval) {
return ((PhpExcel_easy_object*)(objval + 1)) - 1;
}
/*function start*/
PHP_METHOD(PhpExcel, LoadFile) {
/*
if (zend_parse_parameters_none_throw() == FAILURE) {
return;
}
*/
char *file_name = NULL;
size_t name_len;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file_name, &name_len) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
RETURN_BOOL(objval->handle->load(file_name));
}
PHP_METHOD(PhpExcel, SheetCount) {
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
RETURN_LONG(objval->handle->sheetCount());
}
PHP_METHOD(PhpExcel, SheetSwitch) {
long sheet_index;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "l", &sheet_index) == FAILURE) {
RETURN_FALSE
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
long sheet_count = objval->handle->sheetCount();
libxl::Sheet *pSheet = objval->handle->getSheet(sheet_index<0?0:sheet_index>sheet_count?sheet_count:sheet_index);
if(NULL!=pSheet){
objval->cursheet = pSheet;
RETURN_TRUE;
}
RETURN_FALSE;
}
PHP_METHOD(PhpExcel, AddSheetAndSwitchTo) {
char *sheet_name = NULL;
long sheet_name_len;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "s", &sheet_name, &sheet_name_len) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
objval->cursheet = objval->handle->addSheet(sheet_name);
RETURN_BOOL(objval->cursheet!=NULL);
}
PHP_METHOD(PhpExcel, GetSheetNameByIndex) {
long sheet_index;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "l", &sheet_index) == FAILURE) {
RETURN_STRING("");
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
long sheet_count = objval->handle->sheetCount();
libxl::Sheet *pSheet = objval->handle->getSheet(sheet_index<0?0:sheet_index>sheet_count?sheet_count:sheet_index);
if(NULL!=pSheet){
const char *sheet_name = pSheet->name();
RETURN_STRINGL(sheet_name, strlen(sheet_name));
}
RETURN_STRING("");
}
PHP_METHOD(PhpExcel, SetSheetNameByIndex) {
long sheet_index;
char *sheet_name = NULL;
size_t name_len;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &sheet_index, &sheet_name, &name_len) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
long sheet_count = objval->handle->sheetCount();
libxl::Sheet *pSheet = objval->handle->getSheet(sheet_index<0?0:sheet_index>sheet_count?sheet_count:sheet_index);
if(NULL!=pSheet){
pSheet->setName(sheet_name);
RETURN_TRUE
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, GetTotalRow) {
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_LONG(objval->cursheet->lastRow());
}
RETURN_LONG(0)
}
PHP_METHOD(PhpExcel, GetTotalCol) {
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_LONG(objval->cursheet->lastCol());
}
RETURN_LONG(0)
}
PHP_METHOD(PhpExcel, GetCellType) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_LONG(5);//TYPE_ERROR
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_LONG(objval->cursheet->cellType(row, col));
}
RETURN_LONG(5);//TYPE_ERROR
}
PHP_METHOD(PhpExcel, ReadNum) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_DOUBLE(0.0)
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
//const double val = objval->cursheet->readNum(row, col);
//RETURN_DOUBLE(val);
RETURN_DOUBLE(objval->cursheet->readNum(row, col));
}
RETURN_DOUBLE(0.0);
}
PHP_METHOD(PhpExcel, ReadStr) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_STRING("");
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
const char *str = objval->cursheet->readStr(row, col);
RETURN_STRINGL(str, strlen(str));
}
RETURN_STRING("");
}
PHP_METHOD(PhpExcel, WriteNum) {
long row, col;
double num;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "lld", &row, &col, &num) == FAILURE) {
RETURN_FALSE
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->writeNum(row, col, num));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, WriteStr) {
long row, col,formula_len;
char *str = NULL;
long is_bold=0, font_color=8;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "llsll", &row, &col, &str,&formula_len, &is_bold,&font_color) == FAILURE) {
RETURN_FALSE
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
if (is_bold==0 && font_color==8 ){
RETURN_BOOL(objval->cursheet->writeStr(row, col, str));
}else{
Book* book = objval->handle;
if(book){
Font* font = book->addFont();
font->setColor(Color(font_color));
font->setBold(is_bold);
Format* boldFormat = book->addFormat();
boldFormat->setFont(font);
RETURN_BOOL(objval->cursheet->writeStr(row, col, str,boldFormat));
}
}
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, AddPicture) {
long row,col,pic_path_len;
char *pic_path = NULL;
int pic_id ;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &row,&col,&pic_path,&pic_path_len) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if (objval->cursheet != NULL) {
Book* book = objval->handle;
if(pic_path && book){
pic_id = book->addPicture(pic_path);
objval->cursheet->setPicture(row, col, pic_id) ;
}
}
}
PHP_METHOD(PhpExcel, IsFormula) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->isFormula(row, col));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, ReadFormula) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_STRING("")
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
const char *str = objval->cursheet->readFormula(row, col);
RETURN_STRINGL(str, strlen(str));
}
RETURN_STRING("")
}
PHP_METHOD(PhpExcel, WriteFormula) {
long row, col,formula_len;
char *formula = NULL;
long is_bold=0;
long font_color=8 ;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "llsll", &row, &col, &formula,&formula_len, &is_bold, &font_color) == FAILURE) {
RETURN_FALSE
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
if (is_bold==0 && font_color==8 ){
RETURN_BOOL(objval->cursheet->writeFormula(row, col, formula));
}else{
Book* book = objval->handle;
if(book){
Font* font = book->addFont();
font->setColor(Color(font_color));
font->setBold(is_bold);
Format* boldFormat = book->addFormat();
boldFormat->setFont(font);
RETURN_BOOL(objval->cursheet->writeFormula(row, col, formula, boldFormat));
}
}
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, IsDate) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->isDate(row, col));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, SetMerge) {
long rowFirst, colFirst, rowLast, colLast;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &rowFirst, &colFirst, &rowLast, &colLast) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->setMerge(rowFirst, rowLast, colFirst, colLast));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, DelMerge) {
long row, col;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->delMerge(row, col));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, InsertRow) {
long rowFirst, rowLast;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &rowFirst, &rowLast) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->insertRow(rowFirst, rowLast));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, DelRow) {
long rowFirst, rowLast;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &rowFirst, &rowLast) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->removeRow(rowFirst, rowLast));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, InsertCol) {
long colFirst, colLast;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &colFirst, &colLast) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->insertCol(colFirst, colLast));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, DelCol) {
long colFirst, colLast;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &colFirst, &colLast) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->removeCol(colFirst, colLast));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, CopyCell) {
long rowSrc, colSrc, rowDst, colDst;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &rowSrc, &colSrc, &rowDst, &colDst) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->copyCell(rowSrc, colSrc, rowDst, colDst));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, ClearCell) {
long rowFirst, colFirst, rowLast, colLast;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &rowFirst, &colFirst, &rowLast, &colLast) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->clear(rowFirst, rowLast, colFirst, colLast));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, SetRowHeigh) {
long row;
double heigh;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "ld", &row, &heigh) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->setRow(row, heigh));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, SetColWidth) {
long colFirst, colLast;
double width;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "lld", &colFirst, &colLast, &width) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->setCol(colFirst, colLast, width));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, RowHide) {
long row;
bool hide;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "lb", &row, &hide) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->setRowHidden(row, hide));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, ColHide) {
long col;
bool hide;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "lb", &col, &hide) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if(objval->cursheet!=NULL){
RETURN_BOOL(objval->cursheet->setColHidden(col, hide));
}
RETURN_FALSE
}
PHP_METHOD(PhpExcel, SaveToFile) {
char *sheet_name = NULL;
long sheet_name_len;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "s", &sheet_name, &sheet_name_len) == FAILURE) {
RETURN_FALSE;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
RETURN_BOOL(objval->handle->save(sheet_name));
}
static PHP_METHOD(PhpExcel, __construct) {
char* name = NULL;
size_t name_len;
if (zend_parse_parameters_throw(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE){
return;
}
PhpExcel_easy_object *objval = PhpExcel_easy_from_zend_object(Z_OBJ_P(getThis()));
if( strcasecmp("xlsx", name) == 0) {
objval->handle = xlCreateXMLBook();
}else{
objval->handle = xlCreateBook();
}
if(NULL!=objval->handle){
objval->handle->setKey("lucas.D", "linux-2927280408c8e1006bb26867a5t2u3h5");
objval->cursheet = NULL;
}
}
//apis
static zend_function_entry PhpExcel_easy_methods[] = {
PHP_ME(PhpExcel, __construct, NULL, ZEND_ACC_CTOR | ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, LoadFile, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SheetCount, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SheetSwitch, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, AddSheetAndSwitchTo, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, GetSheetNameByIndex, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SetSheetNameByIndex, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, GetTotalRow, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, GetTotalCol, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, GetCellType, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, ReadNum, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, ReadStr, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, WriteNum, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, WriteStr, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, AddPicture, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, IsFormula, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, ReadFormula, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, WriteFormula, NULL, ZEND_ACC_PUBLIC)
//PHP_ME(PhpExcel, IsDate, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SetMerge, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, DelMerge, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, InsertRow, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, DelRow, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, InsertCol, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, DelCol, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, CopyCell, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, ClearCell, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SetRowHeigh, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SetColWidth, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, RowHide, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, ColHide, NULL, ZEND_ACC_PUBLIC)
PHP_ME(PhpExcel, SaveToFile, NULL, ZEND_ACC_PUBLIC)
PHP_FE_END
};
//ctor
static zend_object* PhpExcel_easy_ctor(zend_class_entry *ce) {
PhpExcel_easy_object *objval = (PhpExcel_easy_object*)ecalloc(1, sizeof(PhpExcel_easy_object) + zend_object_properties_size(ce));
//objval->handle = new Person(0,"");
objval->handle = NULL;
zend_object* ret = PhpExcel_easy_to_zend_object(objval);
zend_object_std_init(ret, ce);
object_properties_init(ret, ce);
ret->handlers = &PhpExcel_easy_handlers;
return ret;
}
//clone --not registered
static zend_object* PhpExcel_easy_clone(zval *srcval) {
zend_object *zsrc = Z_OBJ_P(srcval);
zend_object *zdst = PhpExcel_easy_ctor(zsrc->ce);
zend_objects_clone_members(zdst, zsrc);
return zdst;
/*need deep copy*/
PhpExcel_easy_object *src = PhpExcel_easy_from_zend_object(zsrc);
PhpExcel_easy_object *dst = PhpExcel_easy_from_zend_object(zdst);
*dst->handle = *src->handle;
return zdst;
}
//delete
static void PhpExcel_easy_free(zend_object *zobj) {
PhpExcel_easy_object *obj = PhpExcel_easy_from_zend_object(zobj);
if (obj->handle!=NULL){
obj->cursheet = NULL;
obj->handle->release();
}
zend_object_std_dtor(zobj);
}
/*ready function*/
PHP_INI_BEGIN()
//no globals
//STD_PHP_INI_ENTRY("tutorial.default_url", "", PHP_INI_ALL,OnUpdateString, default_url, zend_tutorial_globals, tutorial_globals)
PHP_INI_END()
static PHP_MINIT_FUNCTION(PhpExcel) {
zend_class_entry ce;
INIT_CLASS_ENTRY(ce, "PhpExcel", PhpExcel_easy_methods);
PhpExcel_easy_ce = zend_register_internal_class(&ce);
PhpExcel_easy_ce->create_object = PhpExcel_easy_ctor;
memcpy(&PhpExcel_easy_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
PhpExcel_easy_handlers.offset = XtOffsetOf(PhpExcel_easy_object, std);
//PhpExcel_easy_handlers.clone_obj = PhpExcel_easy_clone; //not supported
PhpExcel_easy_handlers.free_obj = PhpExcel_easy_free;
REGISTER_INI_ENTRIES();
return SUCCESS;
}
static PHP_MSHUTDOWN_FUNCTION(PhpExcel) {
UNREGISTER_INI_ENTRIES();
return SUCCESS;
}
static PHP_GINIT_FUNCTION(PhpExcel) {
#if defined(COMPILE_DL_ASTKIT) && defined(ZTS)
ZEND_TSRMLS_CACHE_UPDATE();
#endif
//init global??
}
zend_module_entry PhpExcel_module_entry = {
STANDARD_MODULE_HEADER,
"PhpExcel",
NULL, /* functions */
PHP_MINIT(PhpExcel),
PHP_MSHUTDOWN(PhpExcel),
NULL,/*print*/
NULL,/*rshutdown*/
NULL,/*minfo*/
NO_VERSION_YET,
PHP_MODULE_GLOBALS(PhpExcel),
PHP_GINIT(PhpExcel),
NULL,/*gshutdown*/
NULL,/*rpostshutdown*/
STANDARD_MODULE_PROPERTIES_EX
};
#ifdef COMPILE_DL_PHPEXCEL
ZEND_GET_MODULE(PhpExcel)
#endif
C++
1
https://gitee.com/wed9/PhpExcel.git
git@gitee.com:wed9/PhpExcel.git
wed9
PhpExcel
PhpExcel
master

搜索帮助