PHP Weekly - 98.
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:
Az első példa a következő hibát okozza:
a második pedig:
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
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:
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
Másodikként pedig André Naess fedezte fel, hogy az
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,
Új
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.
■ 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);
? >
$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"
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)"
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"));
? >
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
) );
'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)
}
? >
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.