php 5.4 yeni özellikler – Dubluve.net http://www.dubluve.net Biz de yazılımcıyız Fri, 27 May 2016 21:57:40 +0000 tr-TR hourly 1 http://i2.wp.com/www.dubluve.net/wp-content/uploads/2016/04/logo_small.png?fit=32%2C29 php 5.4 yeni özellikler – Dubluve.net http://www.dubluve.net 32 32 php 5.4 array dereferencing http://www.dubluve.net/2013/03/12/php-5-4-array-dereferencing/ http://www.dubluve.net/2013/03/12/php-5-4-array-dereferencing/#comments Tue, 12 Mar 2013 18:17:55 +0000 http://dubluve.net/?p=2523 php 5.4 ile gelen yeni özelliklerden biri de, array döndüren metodları kullanırken kolaylık sağlıyor.
Aşağıdaki örnekte getData metodu, array döndüren bir metod. Ve metodu çağırır çağırmaz ise, array keyini yazıp hemen dönen sonucu kullanabiliyoruz.

Tabi burada tanımsız ise hata almanız kaçınılmaz, bu yüzden yanlış veya olmayan bir key’i çağırmamaya dikkat etmeniz şart. Çok da hata bakımından kontrol edilebilir bir şey değil çünkü bu.

function getData() {
    return ['firstname' => 'Emre', 'lastname' => 'Macit'];
}

echo getData()['firstname'];

]]>
http://www.dubluve.net/2013/03/12/php-5-4-array-dereferencing/feed/ 4
php 5.4 callable typehint http://www.dubluve.net/2013/03/12/php-5-4-callable-typehint/ http://www.dubluve.net/2013/03/12/php-5-4-callable-typehint/#comments Tue, 12 Mar 2013 17:51:34 +0000 http://dubluve.net/?p=2521 Php 5.4 te gelen yeni bir özellik de “callable” typehinti.
Callable ile , “çağrılabilir” bir parametre geleceğini ifade etmiş oluyorsunuz. ve istediğiniz zaman bunu çağırabiliyorsunuz.

class Meyve
{
    function __construct($name)
    {
        $this->name = $name;
    }

    public function selam()
    {
        return "Selam " . $this->name;
    }
}
//fonksiyonumuzu tanımlarken $f yi callable olarak cast ediyoruz. (hint ediyoruz)
function selam(callable $f) {
//ve bu şekilde çağırabiliyoruz.
    $f();
}

selam([new Meyve("Armut"), 'selam']);
]]>
http://www.dubluve.net/2013/03/12/php-5-4-callable-typehint/feed/ 3
Php 5.4 Sinif Metoduna Hizli Erisim http://www.dubluve.net/2013/03/11/php-5-4-sinif-metoduna-hizli-erisim/ http://www.dubluve.net/2013/03/11/php-5-4-sinif-metoduna-hizli-erisim/#comments Mon, 11 Mar 2013 16:51:17 +0000 http://dubluve.net/?p=2515 php 5.4 ile birlikte sınıf metodlarına hızlıca erişimin de önü açıldı. böylece 2 satırda yapacağımız işleri artık tek satırda yapabiliyoruz.

class Araba
{
    public $name;
    function __construct($name)
    {
        $this->name = $name;
    }

    public function selam()
    {
        return "Selam " . $this->name;
    }
}

// eski stil
$araba = new Araba("Mersedes");
echo $araba->selam();

// yeni harika stil
echo (new Araba("Ferrary"))->selam();
]]>
http://www.dubluve.net/2013/03/11/php-5-4-sinif-metoduna-hizli-erisim/feed/ 4
isimsiz fonksiyonlar (anonymous functions – closures) (php 5.3 ve sonrasi) http://www.dubluve.net/2012/10/05/isimsiz-fonksiyonlar-anonymous-functions-closures-php-5-3-ve-sonrasi/ http://www.dubluve.net/2012/10/05/isimsiz-fonksiyonlar-anonymous-functions-closures-php-5-3-ve-sonrasi/#comments Fri, 05 Oct 2012 14:35:28 +0000 http://dubluve.net/?p=1861 İsimsiz fonksiyonlar php’nin 5.3 ve sonraki sürümlerinde yer alan güzel bir özelliktir.

Nedir isimsiz fonksiyon? 

Bir mantığa veya algoritmaya ihtiyacınız var ancak bunun dünyanızda o kadar da önemli bir yeri yok. Belki sadece kodunuzu düzgün yazmak istiyorsunuz, veya yapacağınız şeyi daha temiz yapmak istiyorsunuz.

Bu noktada, isimsiz fonksiyonların kullanımı tercih edilebilir.

$selam = function($isim){
    printf("Merhaba %s\r\n", $isim);
};//şeklinde tanımlayıp
echo $selam('Emre');//şeklinde kullanabiliriz.

Yani anlayacağımız şekilde söylersek, bir değişkene bir fonksiyon atamış gibi bir şey oluruz.

php 5.4 ten itibaren de bu isimsiz fonksiyonların içinde “$this” kelimesi de kullanılabiliyor oldu. Bir Class içerisindeki bir metodun içinde kullanıldığında, $this->fonksiyon_ismi() diyerek ilgili classtaki fonksiyonu da çalıştırabiliyor artık.

http://www.php.net/manual/en/functions.anonymous.php#106046 linkinde ise ilginç (güzel) bir kullanımı var. Bir göz atmanızı tavsiye ederim. (kullanmanızı tavsiye etmem ama :), php içinde html’e karşıyım. )

]]>
http://www.dubluve.net/2012/10/05/isimsiz-fonksiyonlar-anonymous-functions-closures-php-5-3-ve-sonrasi/feed/ 9
php 5.4 Diziler (Array) – Php Yeni Özellikler http://www.dubluve.net/2012/03/30/php-5-4-diziler-array-php-yeni-ozellikler/ http://www.dubluve.net/2012/03/30/php-5-4-diziler-array-php-yeni-ozellikler/#comments Fri, 30 Mar 2012 11:13:19 +0000 http://dubluve.net/?p=1115 Php 5.4 ün içindeki yeniliklerden biri de dizilerdeki (array’lerdeki) kısaltılmış kullanım özelliğidir. Aşağıda bu kullanım ile ilgili bir örnek verdim.

//Php 5.4'ten önce
< ?php
$array = array(
    "key1" => "value1",
    "key2" => "value2",
);

// PHP 5.4 'ten itibaren
$array = [
    "key1" => "value1",
    "key2" => "value2",
];

Ayrıca geri döndürdüğü (return değeri) array olan fonksiyonlarda da eskiden uğraştığımız ilk önce değişkene atama çilesi, php 5.4 ile bitmiş olacak.
Artık fonksiyon çağırdıktan sonra doğrudan köşeli parantez ile istediğimiz indisi alabiliriz.

Not : Bu durum optimize çalışmayan metodlar, fonksiyonlar yazmanıza sebep olabilir, bu konuda sistemin gereksiz enerji harcamamasına dikkat ediniz.

< ?php
function getArray() {
    return array(1, 2, 3);
}
// php 5.4'ten önce
$tmp = getArray();
$secondElement = $tmp[1];

//PHP 5.4'ten itibaren
$secondElement = getArray()[1];

// veya
list(, $secondElement) = getArray();
?>
]]>
http://www.dubluve.net/2012/03/30/php-5-4-diziler-array-php-yeni-ozellikler/feed/ 6
php 5.4 Traits – Php Yeni Özellikler http://www.dubluve.net/2012/03/18/php-5-4-traits-yeni-ozellikler/ http://www.dubluve.net/2012/03/18/php-5-4-traits-yeni-ozellikler/#comments Sun, 18 Mar 2012 17:12:21 +0000 http://dubluve.net/?p=1040 Php 5.4 ile ilgili yeni özelliklerden bir tanesi trait kavramı. trait kavramının bir Türkçe karşılığını bulamadım.

Bir sınıfın birden çok miras alması durumu php’de olmayan bir durum. Bildiğim kadarıyla sadece C++’ta var.

Traitler bizi birden çok miras alma durumlarına benzer ihtiyaçları çözmek için getirilmiş bir yenilik gibi gözüküyor.

Normalde 2 adet farklı sınıfımızın aynı fonksiyonu kullanması gerekiyorsa, o iki sınıfın ata sınıfı olarak tanımlar, o metodu onun içine koyar, 2 farklı sınıfımızı da ondan türeterek bu konuyu halledebilirdik.

Peki ya, zaten extend ettiğimiz bir sınıf var ise, ve de ekleyeceğimiz metod ile alakasız ise o zaman ne yapacağız?

Bu durumda duplicate (tekrarlayan) kod yazmamak için traitleri kullanmamız faydalı olabilir.

Php’nin sitesindeki örneği vereyim.

< ?php
trait ezcReflectionReturnInfo {
    public function getReturnType() { /*1*/ }
    public function getReturnDescription() { /*2*/ }
}

class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ..bişeyler bişeyler... */
}

class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* .. bişeyler bişeyler... */
}
?>

Yukarıda 1 trait , 2 sınıf mevcut. 2 sınıfın extend ettiği bir sınıf daha var. (bu kodda yok) Bu durumda 2 farklı sınıfta, ana sınıfta olmayan yeni metodlar istiyorsam, sınıfın içinde use ecReflectionReturnInfo diyerek bu traiti sınıf içinde kullanılabilir hale getirmiş oluyorum.

Yani bu trait içinde yazılı metodlar sanki sınıfın çinde yazılmış public functionlar olarak davranacaklardır.

O yüzden trait kelimesini Türkçe’ye “sınıfçık” olarak çeviriyorum 🙂

Bu mantıkta traitler içinde değişken, static function, vb.. gibi şeyler tanımlayabiliyoruz. Ayrıca hangisini hangisinin yerine kullanacağının ayarlamalarını da detaylı yapabiliyoruz.

Henüz deneyemediğim ve yazılımda ihtiyaç olarak ne şekilde kullanabilceğimin tam oturmadığı diğer bu konular hakkında okumaya devam etmek için php’nin kendi sitesinden devame edebilirsiniz.

http://tr2.php.net/traits

]]>
http://www.dubluve.net/2012/03/18/php-5-4-traits-yeni-ozellikler/feed/ 4