[PHP extensie] PHP array in extensie?

Pagina: 1
Acties:

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Ik heb zelf een extensie voor PHP gemaakt, gewoon in ANSI C, om zo PHP te voorzien van enkele extra functies. Werkt prima, variabelen uitwisselen tussen PHP en de extensie is simpel. Ook in de extensie arrays maken en die aan PHP doorgeven is eenvoudig.

Maar voor een extra feature wil ik wat doubles in een array aan de extensie doorgeven, en daar zit het probleem: ik kan nergens API functies en/of macro's vinden om handig alle elementen uit die array op te vragen!

Wel is er Z_ARRVAL(zval), maar er staat niet bij wat dat precies als resultaat oplevert. Het is een macro naar (zval).value.ht. (hashtable dus) Maar kan ik die pointer opvatten als een array van ZVAL containers? En hoe kom ik achter de omvang van die array?

Kort door de bocht zoek ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
ZVAL *pTemp;
double *dMijnArray;
int iSize,i;

iSize=GetArraySize(zvalArray);
dMijnArray=(double*)malloc(iSize*sizeof(double));

for (int i=0;i<iSize;i++) {
  pTemp=zvalArray.nextElement();
  convert_to_double_ex(pTemp);
  dMijnArray[i]=Z_DVAL_P(pTemp);
}

Kan iemand dit stukje kloppend maken? :P (m.n. GetArraySize en .nextElement, die bestaan dus niet maar geven aan wat ik zoek)

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
*schop*

Heeft hier dan niemand ooit een PHP extensie gemaakt?

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
Op woensdag 10 juli 2002 18:39 schreef Nexxennium het volgende:
*schop*

Heeft hier dan niemand ooit een PHP extensie gemaakt?
volgens mij ben je hier de eerste,
er zijn ooit wel draadjes voorbij gekomen waar iemand ging aankondigen datie er zwaar over zat te denken maar verder nooit meer wat van gehoord.

ben eigenlijk wel benieuwd.

heb hier nog wel een bookmark:
[topic=181111/1/100]
http://www.qandr.org/~quentinsf/phpmodule/

probeer het eens op de zend site of scrijf een mailtje naar zeef of andi van zend.

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Op woensdag 10 juli 2002 19:16 schreef GiLuX het volgende:

[..]

volgens mij ben je hier de eerste,
er zijn ooit wel draadjes voorbij gekomen waar iemand ging aankondigen datie er zwaar over zat te denken maar verder nooit meer wat van gehoord.
Toch vreemd eigenlijk. Hoewel de huidige PC's best krachtig zijn enzo is PHP toch niet echt supergeschikt om zware taken te laten uitvoeren.

OTOH zie je dat webapplicaties vaak niet meer zijn dat wat tekst i/o van/naar de gebruiker die aan een database gekoppeld is. Sja dat kan uitstekend in PHP.
heb hier nog wel een bookmark:
[topic=181111/1/100]
http://www.qandr.org/~quentinsf/phpmodule/
Thanx, maar niet bijster nuttig. De manier van PHP3, vooral mbt variabelen is ietwat achterhaald. Als je zelf aan de slag wilt gaan, dan verdient de nieuwe manier echt de voorkeur, veel handiger ook. En een discussie over de voordelen van een eigen extensie gaat ook niet verder helpen :+

Helaas is de informatie over de Zend API die op de Zend en PHP pagina staat vrij karig (maar afdoende, het is me immers zover wel gelukt :)) Toch maar eens mailen naar die gasten, mocht ik het echt nodig hebben. Momenteel was het meer voor een experimentje.

Maar mocht iemand ook een eigen .DLLetje dan wel .SO'tje willen bouwen, dan kunnen we hier wel info uitwisselen. Ik heb inmiddels al wat ervaring *D

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Ik heb een tijdje geleden twee PHP extensies gemaakt (ubb parser en syntax highlighter), maar nooit arrays gebruikt. Als ik nu echter naar de Zend code kijk (zend_hash.h) lijkt het me dat je HashTable.nNumOfElements kunt gebruiken voor het opvragen van het aantal elementen. Het opvragen van het n'de element kun je dan simpelweg doen door die index op te geven als key van de hashtable. Je kunt waarschijnlijk ook HashTable.pListHead en Bucket.pNext gebruiken om door de elementen te itereren.

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Ah thanks. Die nNumOfElements had ik zelf ook al eens gespot maar verder nog niets mee gedaan.

Nadeel hiervan is dat het eigenlijk een hack in PHP/Zend is ipv een nette API call. De kans dat het dus bij een volgende PHP versie niet werkt is dan dus groter. Toch vreemd, gezien het bestaan van Z_ARRVAL()..
Pagina: 1