
kaciranlar icin yazayim dün gece 8. RC ardindan Php 5.4 yayinlandi.
Degisiklikleri uzun uzun anlatmiyacagim, release ler ciktiginda birsürü blogda zaten yeniliklerden bahsedildi.
Önemli degisiklilere kisa bir göz gezdirelim.
1. Traits
Php gibi tek mirasli dillerde kodu tekrar kullanmak icin olan bir yöntemdir.
<?php
class Base {
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello();
?>
cikti
Hello World
2. shortened array syntax
<?php
function getArray() {
return array(1, 2, 3);
}
// on PHP 5.4
$secondElement = getArray()[1];
// as of PHP 5.4
$array = [
"foo" => "bar",
"bar" => "foo"
];
3. Constructor ardindan direk Metod calistirila bilinir (Fluent Interface)
echo (new Foo)->bar()
< ?=
short_open_tag ‘e bakılmaksızın < ?= artık her zaman kullanılabilir.
4. Binär sayi bicimi kullanimi eklenmistir (0b)
$binary = 0b001001101; echo $binary;
Class::{expr}()
class Test{
public function method() {
echo 'Hello';
}
public static function staticmethod() {
echo 'Static';
}
}
$method = 'staticmethod';
$test = new Test();
$test->method(); //Prints Hello
$test->$method(); //Prints Static
$test->{'method'}(); //Prints Hello
Test::method(); //Prints Hello
Test::$method(); //Prints Static
Test::{'method'}(); //Prints Hello
6. $GLOBALS lerde artik “lazy initialisation” kullaniliyor
Callable Type Hinting
<?php
// A function that uses type hinting
function typeHinting(callable $a) {
echo $a() . PHP_EOL;
}
// A closure
$closure = function () {
return __FUNCTION__;
};
// Call the type hinting function with the closure
typeHinting($closure); // {closure}
class testClass {
public function testMethod() {
return __METHOD__;
}
}
// A mock object
$testObj = new testClass();
// The new way of calling object methods
$objCallable = array($testObj, 'testMethod');
// Call type hinting function with the new method calling way
typeHinting($objCallable); // testClass::testMethod
upload progress e direk erisim
session.upload_progress.enabled = 1 session.upload_progress.prefix = upload_progress_ session.upload_progress.name = PHP_SESSION_UPLOAD_PROGRESS
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="johannesupload" />
<input type="file" name="file1" />
<input type="file" name="file2" />
<input type="submit" />
</form>
E_STRICT E_ALL un parcasi haline geldi
php.ini deki “default_charset” ISO-8859-1 den UTF-8 degistirildi
Php 5.4 kendi icinde kücük bir Webserver barindirmakta
Safe Mode, register_globals, register_long_arrays php.ini den kaldirildi
Magic Quotes (magic_quotes_gpc)
Simdlik bukadar unuttuklarim varsa asagiya ekleyiniz 😉
Linkler:
http://php.net/releases/5_4_0.php
http://docs.php.net/manual/en/migration54.new-features.php
http://blog.claudiupersoiu.ro/2012/02/11/php-5-4-closures-the-right-way/
http://schlueters.de/blog/archives/151-Upload-Progress-in-PHP-trunk.html
http://php.net/manual/en/features.commandline.webserver.php