» »

Izšel PHP 5.5

Izšel PHP 5.5

Slo-Tech - Vsem znani in ljubi programski jezik PHP je po malo več kot letu dni razvoja dobil svežo različico 5.5.

Med novostmi, ki jih ni malo, se zopet najde bombončke iz drugih jezikov, kot so generatorji in korutine, klavzula finally za na konec try - except bloka in možnost uporabe konstrukta list(.., .., ..) v foreach stavkih. Nove so tudi funkcije za izdelavo in preverjanje soljenih hashev za gesla, ki po končno uporabljajo algoritem bcrypt, ki ni tako zelo enostaven za masovno razbijanje gesel.

Podjetje Zend je prispevalo tudi odprtokodno različico knjižnice OPCache, ki s predpomnenjem že prevedene PHP kode prispeva k znatni pohitritvi. Mnogim je znana podobna rešitev APC, ki žal ni več vzdrževana.

Novica na Slashdotu ob tem ne pozabi poudariti, da naj bi bil PHP sredi renesanse, torej nek nov razmah jezika PHP. Citirajo nedavno najavljeno podporo za Googlov AppEngine, ter "trume in trume razvijalcev, ki naj bi se zgrinjale nad trenutno najpopularnejše ogrodje za izdelavo spletnih strani Laravel", zlasti na rovaš ogrodij RoR in Django. Isto so rekli tudi za Codeigniter, a le čas bo pokazal svoje.

11 komentarjev

techfreak :) ::

Definitivno so mi novejse verzije boljse, se vseeno pa cakam, da vrzejo stran legacy podporo in vse stvari zmecejo v primerne namespace, ter bolj logicno poimenujejo funkcije. Recimo namesto strtolower($string) bi lahko imeli $string->toLower(), znebili bi se lahko 1:1 preslikavo funkcij iz Cja (npr. mysql_real_escape_string), array("1","2","3")[0] bi lahko vrnilo "1", namesto errorja, ne bi se branil malo vecje locitve stringov in intov, ter primerjalni operatorji bi lahko boljsi (==, ===).

Glede frameworkov pa je tako, da me naceloma vsi odvrnejo od uporabe (od CodeIgniterja do CakePHP in Yiija), mogoce ne takoj, ampak zelo kmalu, ko ugotovim da je potrebno pisati veliko vec kode kot pri Python/RoR. Laravel je prvi PHP framework, ki bi me preprical v uporabo.

Se ena lepa preglednica glede primerjalnega operatorja ==:

Zgodovina sprememb…

blackbfm ::

ma te frameworki so za en klinac vsi po vrsti, še manjka nekaj let da bo to na nivoju tako kot je treba..kok živcev gre zdaj, sploh za kakšne interne fore kjer pol najdeš workaround na neki obskurni strani na googlu..

tale laravel pa, tako na hitro kokr sm počekiral ne ponuja nič ne-videnega kje drugje, sam s tem da je njihova stran prav bedno osladana z nekimi wannabe marketinškimi frazami

joebanana ::

Sam sem razvil par bl costum strani ter par pluginov za Laravel in mislim da je Eloquet eden najboljših ORM rešitev. Poleg tega demonstrirajo bolj napredne stvari kot je IoC, repositoriji hkrati pa je še vedno lahko delaš klasične reči kot v CI. Mislim, da je zelo spodobna konkurenca RoR. Definitivno je framework narejen premišljeno.

Zgodovina sprememb…

pegasus ::

Wow, nov php ... koliko starih joomel in kajjazvemkajševsega bo crknilo, če upgradam? ;)

techfreak :) ::

Verjetno nobena, ker ohranja kompatibilnost za nazaj. Bi pa rekel da je skrajno neprimerno uporabljati stare verzije aplikacij.

pegasus ::

Se strinjam, ampak razloži to userjem ... sej njim vse dela, kaj bi se matrali z upgradei ...

drola ::

techfreak :) je izjavil:

Definitivno so mi novejse verzije boljse, se vseeno pa cakam, da vrzejo stran legacy podporo in vse stvari zmecejo v primerne namespace, ter bolj logicno poimenujejo funkcije. Recimo namesto strtolower($string) bi lahko imeli $string->toLower(), znebili bi se lahko 1:1 preslikavo funkcij iz Cja (npr. mysql_real_escape_string), array("1","2","3")[0] bi lahko vrnilo "1", namesto errorja, ne bi se branil malo vecje locitve stringov in intov, ter primerjalni operatorji bi lahko boljsi (==, ===).

Glede frameworkov pa je tako, da me naceloma vsi odvrnejo od uporabe (od CodeIgniterja do CakePHP in Yiija), mogoce ne takoj, ampak zelo kmalu, ko ugotovim da je potrebno pisati veliko vec kode kot pri Python/RoR. Laravel je prvi PHP framework, ki bi me preprical v uporabo.

Se ena lepa preglednica glede primerjalnega operatorja ==:


Stari mysql modul je deprecated od 5.5 naprej, torej se bojo v prihodnjih verzijah vse mysql_* funkcije poslovile. Zdaj sem uporabljata mysqli in PDO_mysql.

funkcija()[0] sintaksa pa je podprta od PHP 5.4 naprej. Poleg tega je bil v 5.4 dodana tudi skrajšana sintaksa za ustvarjanje seznamov: $a = [1,2,3];

Kar se pa $string->toLower() in podobnega tiče, bi pa to v PHPju imelo precej posledic, ker za razliko od Pythona nizi niso objekti. Opcij je več:
1) Stringi postanejo objekti, vendar bi to pomenilo, da mora PHP dobiti najprej še operator overloading.
2) Dvoživke kot v Javi, torej string kot sedaj in String objekt. Ko narediš $string->metoda(), se $string casta v object in se izvede na njem metoda.
Obe različici bi bili precej počasni. Se bojim, da gre tu pač za eno od temeljnih razlik med jeziki in da v PHPju $string->toLower() še nekaj časa ne bomo videli.
https://drola.si

techfreak :) ::

funkcija()[0] sintaksa pa je podprta od PHP 5.4 naprej. Poleg tega je bil v 5.4 dodana tudi skrajšana sintaksa za ustvarjanje seznamov: $a = [1,2,3];

Se mi je zdelo da je že podprta, vendar ko sem sprobal array(1,2,3,4)[0] sem dobil error.

Je kakšna razlika med mysqli in mysql, razen v tem da so pri mysqli C funkcije pometali v namespace?

Obe različici bi bili precej počasni.

Ker delo z nizi in ostalimi spremeljivkami je pa pri PHPju trenutno svetlobno hitro.

drola ::

Aham, sem stestiral zdaj (PHP 5.4):
➜  ~  php -a
Interactive shell

php > echo array(1,2,3)[0];
PHP Parse error:  syntax error, unexpected '[', expecting ',' or ';' in php shell code on line 1
php > function funkcija(){ return array(1,2,3); };
php > echo funkcija()[0];
1php > 
➜  ~  php -v
PHP 5.4.9-4ubuntu2.1 (cli) (built: Jun 11 2013 13:10:01) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies


Torej array() je v PHP Manualu napačno dokumentiran kot funkcija, čeprav je očitno poseben konstrukt.

Primerjava različnih razširitev za komunikacijo z MySQL:
  PHP's mysqli Extension PDO (Using PDO MySQL Driver and MySQL Native Driver) PHP's MySQL Extension
PHP version introduced 5.0 5.0 Prior to 3.0
Included with PHP 5.x yes yes Yes
MySQL development status Active development Active development as of PHP 5.3 Maintenance only
Recommended by MySQL for new projects Yes - preferred option Yes No
API supports Charsets Yes Yes No
API supports server-side Prepared Statements Yes Yes No
API supports client-side Prepared Statements No Yes No
API supports Stored Procedures Yes Yes No
API supports Multiple Statements Yes Most No
Supports all MySQL 4.1+ functionality Yes Most No
https://drola.si

drola ::

V PHP 5.5 očitno deluje tudi array(1,2,3)[0]:
drola@VB-UBUNTUPHP55:~$ php -v
PHP 5.5.1-dev (cli) (built: Jun 29 2013 19:35:30) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies
drola@VB-UBUNTUPHP55:~$ php -a
Interactive mode enabled

php > echo array(1,2,3)[0]."\n";
1
https://drola.si

technolog ::

Jasno, če pa array() ni funkcija, ampak konstrukt programskega jezika.

Delalo pa bi lahko tole:

php > echo [1,2,3][0];
PHP Parse error: syntax error, unexpected '[', expecting ',' or ';' in php shell code on line 1


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Joomla

Oddelek: Izdelava spletišč
64127 (4127) _Beast
»

pod log in še enkrat log in

Oddelek: Izdelava spletišč
51274 (1160) egolob
»

V čem je PHP boljsi od navadnega HTML- ja

Oddelek: Izdelava spletišč
91635 (1413) JerKoJ
»

Homepage in programi

Oddelek: Izdelava spletišč
161287 (1093) sopex
»

prevod

Oddelek: Šola
7970 (908) perci

Več podobnih tem