ugrás a tartalomhoz

PHP Weekly - 98.

Granc Róbert · 2002. Aug. 13. (K), 16.23
A Zend szokásos heti hírlevelének 98. számából:

PHP PECL Hitelesítési Hatóság - a két héttel ezelőtti PECL hitelesítési problémákat követően úgy tűnik, hogy vagy Rasmus Lerdorf, vagy Stig Bakken lesz majd e terület felelőse. Ha a PHP közösségben valakinek van már tapasztalata hasonló területeken, vagy a folyamat egyszerűsítésében tudna segíteni, kérjük, vegye fel a kapcsolatot a fejlesztőkkel a levelezőlistán!

Tömb inicializálása - Yasuo Ohgaki talált egy hibát a PHP jelenlegi verzióinak tömbinicializálásában. A következő kódrészlet (amint azt Yasuo megadta) bemutatja a problémát:

< ?php

 $str = 'A';

 $str[] = 'b';

? >

< ?php

 $int = 123;

 $int[] = 'b';

 var_dump($int);

? >


Az első példa a következő hibát okozza:

"PHP Fatal error: [] operator not supported for strings in - on line 3 -(3) :

Fatal error - [] operator not supported for strings"


a második pedig:

"PHP Warning: Cannot use a scalar value as an array in -      on line 3 -(3) :

Warning - Cannot use a scalar value as an array

Warning: Cannot use a scalar value as an array in - on line 3 int(123)"


Már ez a következetlenség is eléggé zavaró, de Yasuo rámutatott, hogy egyik hibaüzenet sem a megfelelő viselkedés - az valószínűleg a változó újrainicializálása lenne tömbként, hiszen a gyakorlott PHP programozók pont ezt a viselkedést várnák.

Még nincs eldöntve, hogyan lesz megoldva a 4.3.0-ig ez a "funkció".

A copy() és az "üres" fájlok - Ilia A. megtalált és kijavított egy, a copy() függvényt érintő problémát: ha a copy() parancsnak üres (0 bájtos) fájlt adtunk, az hibaüzenetet adott vissza akkor is, ha a fájlt sikeresen átmásolta. Ez egy apró hibának volt köszönhető a streams megvalósításban. A következő kód (amelyet szintén Ilia küldött) sikeresen mutatja be az eredeti problémát:

< ?php

 touch("mini");

 var_dump(copy("mini", "mini2"));

? >


tcsetattr() fügvény - Alan Knowles írta az új függvényt, amely a dio fájlok leírását szabályozza a dio kiegészítőhöz (direct input/output, a C szintű ki- és bemenetnél -mint a fopen vagy fread-, alacsonyabb szintű ki- és bemenet támogatása). A függvény a következőképp kell meghívni:

dio_tcsetattr($fd, array(

'baud' => 9600,

'bits' => 8,

'stop' =>1,

'parity' => 0

     ) );


A patchet Alan üzenetéből vagy a CVS-ből lehet letölteni.

Callback pcntl számára - Alan Knowles a pcntl kiegészítő (Process Control, azaz processzfelügyeleti függvények) számára is készített egy patchet. A kód lehetővé teszi a PHP szkript számára egy függvény definiálását, amely egy adott jel megérkezésekor hívódik meg. A következő példa megmutatja, hogyan lehet soros portról adatokat beolvasni:

< ?

 dl('dio.so');

 /* signal callbacks .... */

 function got_data() {

  global $fd;

  $data = dio_read($fd,256);

  if ($data) {

   echo $data;

  }

 }

 $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

 dio_fcntl($fd,F_SETOWN,posix_getpid());

 dio_fcntl($fd,F_SETFL, O_ASYNC );

 // dio_fcntl($fd,F_SETFL, O_SYNC );

 pcntl_signal(SIGIO, 'got_data');

 dio_tcsetattr($fd, array( 'baud' => 9600, 'bits' => 8, 'stop' =>1, 'parity' => 0 ));

 echo "STARTING READ";

 while (1) {

  usleep(1)

 }

? >


Ez a patch nem a gyenge szívűeknek szól, ha pedig valaki tesztelni szeretné, először mindenféleképp olvassa el Alan mindkét üzenetét: első, második.

Register globals kérdések - Úgy tűnik, hogy a PHP jelenlegi verziója két register globals hibával is idegesít bennünket.

Elsőként Marcus Boerger számolt be arról, hogy a register_argc_argv függvény nem működik megfelelően, ha a register_globals NEM "on"!

Másodikként pedig André Naess fedezte fel, hogy az unset($_SESSION['varname']) nem működik, ha a register_globals bekapcsolt állapotban van - ez pedig jelentősen megnehezíti az áttérést a globális változók korábbi stílusáról az újra.

Remélhetőleg mindkét probléma megoldódik a 4.3.0-ig.

Java a Mac OS X rendszeren - Dan Kalowsky tette közzé javítását, amely magába foglalja az ext/java támogatás kezdeteit a Mac OS X-et használó PHP-seknek. Dan alig várja, hogy minél többen teszteljék javítását minden platformon - tehát ha valaki sokat használja az ext/java kiegészítőt, ez neki is szólhat.

A Sybase kiegészítő új funkciói - Timm Friebe számos új funkciót adott a Sybase kiegészítőhöz: üzenetkezelő, típusbiztonság, sybase_fetch_assoc, javított sybase_fetch_object, valamint a sybase_unbuffered_query egy megvalósítása. Brad LaFountain valószínűleg berakja mindezeket a CVS-be, még a 4.3.0 előtt.

Új php_error_docref függvény - Marcus Börger ötlete alapján a PHP 4.3.0 olyan hibaüzeneteket kaphat, amelyek a felhasználót az online kézikönyvnek a hibát okozó függvényre vonatkozó oldalára irányítják.

A rendszer minden valószínűség szerint felhasználó által konfigurálható lesz, így a rendszeradminisztrátorok az alap URL-t (base URL) a php.net tükörszerverére, vagy a kézikönyv helyi másolatára is irányíthatják.

További részletekről akkor tudunk beszámolni, ha az elképzelés teljesen kikristályosodik majd.