PHP 5.4 stabiele versie

Toegevoegd door Kees Schepers, 15 jaar geleden

PHP 5.4 stabiele versieEr is een nieuwe stabiele versie van PHP uitgebracht, namelijk PHP 5.4. Vorige week werd nog aangekondigd dat PHP 5.4 RC8 uit was en de eerst volgende release candidate op 1 maart uitgebracht zou worden. Integenstelling is dit de stable release van de langverwachte versie PHP 5.4 geworden!

PHP 5.4 is een grote stap richting een nog professionelere ontwikkeltaal. Door de ondersteuning van bijvoorbeeld Traits wordt object georiënteerd ontwikkelen nog eenvoudiger.

Maar er zijn ook een hoop kleine dingen verbeterd en veranderd die het ons als ontwikkelaars eenvoudiger maken:

Kortere array declaratie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function giveMeThatArray() {
  return array('jan', 'piet', 'klaas');
}


echo giveMeThatArray()[1]; //piet
?>


Of object chaining direct aan de constructor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$object = new SomeClass()->setSomeProperty('test', 'value')->setAnotherProperty('test123', 'value');


Het is wel belangrijk in bovenstaande voorbeeld dat setSomeProperty en setAnotherProperty zich zelf terug geven (genaamd fluent-interface).

$this in closures
Vanaf PHP 5.3 zijn zogenoemde 'anonymous' functions ondersteund:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<php
$var = function($param) {
  echo $param;
}
?>



Vanaf PHP 5.4 is ook het keyword $this in closures ondersteund waarmee je functions van de closure class kan gebruiken in je closure.

'<?=' is nu altijd beschikbaar
Vanaf PHP 5.4 is <?= altijd ongeacht de PHP ini instellingen. Dit is vermoedelijk gedaan vanwege het feit dat in view scripts van veel frameworks (bijvoorbeeld Zend Framework) deze notatie erg gewenst was en ontwikkelaars het vervelend vonden om de short tag daarvoor in te moeten schakelen. In PHP 5.4 kun je dus de short tag uitschakelen (zodat <? niet meer is toegestaan om een script te starten) maar kun je vervolgens nog wel de <?= gebruiken om gegevens te printen in een view script.

Zo zijn er nog veel meer (nuttige) toevoegingen in PHP 5.4 en ook een aantal dingen weggehaald die deprecated waren. Als je nog dieper in de info wilt duiken:

PHP 5.4 migration guide
New features in PHP 5.4

Happy PHP'ing!

Gerelateerde nieuwsberichten

28/02/2024 LockBit website door politie gekraakt via mogelijk lek in PHP
08/05/2023 PHPhulp verhuisd
21/04/2023 Bug opgelost met traagheid PHPhulp

 

Er zijn 15 reacties op 'Php 54 stabiele versie'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Vincent Huisman
Vincent Huisman
15 jaar geleden
 
0 +1 -0 -1
iemand is de ignore tag vergeten
Kees Schepers
kees Schepers
15 jaar geleden
 
0 +1 -0 -1
Ik dus, en ik zie ook wel spelfouten, dus hopelijk verbeteren ze het nog want ik kan het niet meer wijzigen :(

Quote:
Vorige week werd nog aangekondigd dat PHP 5.4 RC8 uit was en de eerst volgende release candidate op...


En het object chaining gedeelte tussen php tags voor de color coding.
Ozzie PHP
Ozzie PHP
15 jaar geleden
 
0 +1 -0 -1
Thanks voor de info Kees! Altijd goed om van dit soort zaken op de hoogte te worden gehouden.

(Wellicht is het nog een mooie toevoeging om kort uit te leggen wat "traits" inhoudt zodat je niet per se de link hoeft te volgen. Dat zou het bericht compleet maken denk ik.)
Wouter J
Wouter J
15 jaar geleden
 
0 +1 -0 -1
Geweldig, begint steeds meer op JS te lijken!

Vooral de korte array declaratie en trait vind ik een goede stap vooruit.

Heb hem hier meteen geïnstalleerd.
Chris -
Chris -
15 jaar geleden
 
0 +1 -0 -1
Ziet er interessant uit, bedankt voor de heads-up Kees. Las 't gister wel op twitter maar vooral de shorttags vind ik erg handig (let wel; enkel om in views te gebruiken..)
Wouter J
Wouter J
15 jaar geleden
 
1 +1 -0 -1
Jammer dat ik nergens een class code kan vinden van hoe constructor method chaining nou werkt.
Betekend dit dat ik nu in de constructor waardes kan returnen, of wordt er standaard $this geruterned?



voor ozzie
Traits is een functie van methods die je zo makkelijk in een klasse kan laden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
trait SayHello
{
  public function sayHello()
  {

    return 'Hello '.$this->name;
  }

  // meer standaard Hello method
}

class Welcome
{
  protected $name;

  use SayHello; // de method sayHello en andere in de SayHello trait is nu property van deze klasse geworden

  public function __construct( $name )
  {

    $this->name = $name;
  }
}


$w = new Welcome('World');
echo $w->sayHello(); // hello world
?>
Ozzie PHP
Ozzie PHP
15 jaar geleden
 
0 +1 -0 -1
Thanks Wouter, duidelijke uitleg :)
Roel -
Roel -
15 jaar geleden
 
0 +1 -0 -1
Dus eigenlijk is dit wat Java e.d. gebruiken met import en using?
Edit: ik vergis me. Bij een import bij Java wordt een heel bestand geïmporteerd en bij een trait alleen functies?

Maar wat is dan de meerwaarde t.o.v. bijvoorbeeld een interface?
Kees Schepers
kees Schepers
15 jaar geleden
 
0 +1 -0 -1
Met traits kun je veel voorkomende functies in je classes embedden. Dat is wat ik er grotendeels van begrepen heb. Ik ga me er binnenkort ook in verdiepen. Ik ben benieuwd hoe lang het duurt voordat PHP 5.4 in de repo's zit van Ubuntu, ik denk niet over een al te lange tijd :)

@Wouter, wat betreft chaining, je krijgt terug wat de variabele ook terug zou krijgen normaal, het object zelf dus.
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Is de 'Kortere array declaratie' niet heel vies?

Als je het eerste item uit de array op het scherm wilt tonen moet je dat toch gewoon in de functie retourneren?

De trait daarin tegen is wel heel mooi ;-)

Edit: De shortags staan bij veel servers wel aan. Ik heb bij Versio, Hostnet, Antiogist gehost en daar hadden ze allemaal de 'shortag' aangezet.
Wouter J
Wouter J
15 jaar geleden
 
0 +1 -0 -1
Quote:
Is de 'Kortere array declaratie' niet heel vies?

In JS zit dit al tijd al en ik vind het niet heel vies. Het is een beetje vreemd om in PHP te stoppen, want JS is natuurlijk veel meer een 'one line'-scripttaal dan PHP.

Nu moest ik het altijd oplossen met end of reset om in 1 keer de laatste of eerste waarde te krijgen van het retourneerde waarde.

Trait is inderdaad wel mooi, maar ik zit een beetje te twijfelen over het echte nut ervan. Zijn er nou echt functies die je in veel klasse nodig hebt zonder dat die klasse interfaces of abstracte klasse zijn?
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Ik heb ook diversen situaties gehad waarin ik het zeer handig vond, maar als je het goed bekijkt is het niet netjes als je het gebruikt.

Oplossingen like end of reset of current vind ik niet netjes. Als je het eerste item uit een array wilt hebben moet je geen array retourneren maar gewoon het eerste item.

Toch?
Wouter J
Wouter J
15 jaar geleden
 
0 +1 -0 -1
Bij methods is het inderdaad handiger om dan een enkel resultaat te returnen. Maar bij standaard functies in PHP is het toch zeer handig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$str
= 'Hello world and some lorem ipsum';

// ik wil het woordje 'world' hebben
$str = explode(' ', $str)[1];

# lijkt me handiger dan
$str = explode(' ', $str);
$str = $str[1];
?>
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Dan is het ansich best mooi, daarom zei ik ook dat ik diversen situaties heb gehad waarin ik het zeer handig vond, maar ik had het over het voorbeeld wat Kees gaf ;-)

Daarnaast, heeft iemand van Facebook al een keer een library op internet gezet die dit mogelijk maakte. (ik ben het linkje even kwijt)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
15 jaar geleden
 
0 +1 -0 -1
Een artikel op nettuts+: http://net.tutsplus.com/tutorials/php/php-5-4-is-here-what-you-must-know/

Dingen die daar wel worden genoemd, maar hier niet:
- JS array syntax:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$myArr
= ['Hello', 'World', 'Foo'];
// wat wel lelijk is:
$myArr = [
  'foo' => 'Hello',
  'bar' => 'World'
];
?>

- Binaire nummers:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$myBinNumber
= 0b1011;
?>

- typehinting voor callables

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Labels

PHP nieuws opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.