Ubuntu Türkiye

Yazılım => Programlama => PHP => Konuyu başlatan: Neof07 - 20 Mart 2017 - 00:36:39

Başlık: Değişkenleri farklı ifade etme
Gönderen: Neof07 - 20 Mart 2017 - 00:36:39

$renk='mavi';
$$renk='blue';
echo $renk.'<br>';
echo $$renk.'<br>';
echo ${$renk}.'<br>';
echo $mavi;


Yukarıda ki değişken tanımlamalarında anlayamadığım tek şey "$mavi" değişkeni. Değişkenin değeri mavi iken nasıl ismi olabiliyor ? Mantığını anlamak istediğim 2. satırda ki kodun. Yoksa ezbere giderim.
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: Source - 20 Mart 2017 - 00:45:54
Sana yardımcı olabilecek kaynak :

http://php.net/manual/tr/language.variables.variable.php

Sorularını php.net üzerinden bulabilirsin.
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: Neof07 - 20 Mart 2017 - 00:49:40
@Source, teşekkürler. Türkçe desteği var mı acaba :D Yani soru sorarken forumda türkçe konuşabiliyor muyuz :D
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: Source - 20 Mart 2017 - 00:54:45
Soru cevap şeklinde değil php nin dökümanları bulunur orda ve diğer kulanıcıların önerileri gibi düşün.nacizane tavsiyen şu olur senin aradığın mantık syntax üzerinde sen php nin syntaxını sorgularsan mantık hatası olur.


Tapatalk kullanarak iPhone aracılığıyla gönderildi
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: Neof07 - 20 Mart 2017 - 01:13:53
@Source, kullandığım her kodun düşük seviyeli olarak ne iş yapmak istediğini bilmek isterim o yüzden. Ben kontrol edebilmeyi, yönetmeyi severim. Bu yüzden herhangi bir hata da onun sebebini anlamaya çalışıyorum. Yani sadece assembly ile proje geliştirmek gerçekten zor, bu yüzden yüksek seviyeli diller var. Ama yüksek seviyeli dillerin kullandığı fonksiyonlar veya yapılarının ne iş yaptığını bilmek hoşuma gidiyor ve ben böyle öğrenebiliyorum. Tabii en basit yapılar bile, mesela değişken atarken arka planda neler oluyor ? Mantık dizisine dizer gibi hepsi aklıma giriyor. Bu yöntem daha hoş bence. Bilmiyorum fikrim ne kadar doğru yada imkanlı ?

Bu şuna benziyor biraz da; matematik de bazen işlemleri atlarsınız kısaca yazmak için. O konuyu ilk öğrenenler her zaman o işlemleri yapmak zorundadır ki kısa yoldan artık onları zihinden yapabilsin. Bunun gibi yani.
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: Source - 20 Mart 2017 - 01:28:19
Tabiki katılıyorum sana ama php.net üzerinden bir örnek vereyim:

Bazen değişken değişken isimlerine sahip olabilmek kullanışlı olur. Bu, devingen olarak belirtilebilen ve kullanılabilen bir değişken ismidir. Normal bir değişken şöyle bir deyimle atanır:

<?php
$a 
'merhaba';
?>


Bir değişken değişken bir değişkenin değerini alır ve bir değişkenin ismi gibi davranır. Yukarıdaki örnekteki, merhaba, iki tane dolar imi ile bir değişken ismi olarak kullanlabilir

<?php
$$a 'dünya';
?>


Yukarıda anlatılanlar php syntaxındaki kuralları anlatıyor.Senin sorun şu :

Yukarıda ki değişken tanımlamalarında anlayamadığım tek şey "$mavi" değişkeni. Değişkenin değeri mavi iken nasıl ismi olabiliyor ? Mantığını anlamak istediğim 2. satırda ki kodun. Yoksa ezbere giderim.

Şimdi senin mantığın şu neden $$ işareti koyduğumuzda değişkenin ismini alıyor.Çünkü php syntaxı bu şekilde tanımlıyor yani bunda mantık aramanın çok doğru olduğunu düşünmüyorum.Bunda bir mantık yok yani kural bu php onu o şekilde tanımlıyor ve yorumluyor.Php sonuç olarak açık kaynaklı bir dil sen dersen ki ben php geliştirmek istiyorum o kaynakda burda https://github.com/php o zamanda tabi c,c++ bilmen gerekecek.
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: Neof07 - 20 Mart 2017 - 01:36:34
@Source, sanırım sorum yanlış olmuş. sistemi nasıl işliyor yani. Ben C çalışırken bulduğum kaynakta pointer kavramını mesela çok güzel açıklamıştı. Konusu hafıza adresleri olunca tek tek mantığını anlatıyor. Bende burada $$ koyunca o değişkenin değerini nasıl aldığını sormak istemiştim. Ama sanırım bunu github'dan kodları inceleyerek öğrenebilirim. O tabii ileri safhalarda :D
Başlık: Ynt: Değişkenleri farklı ifade etme
Gönderen: guestwho - 20 Mart 2017 - 19:12:13
Yorumlayıcısı olan bütün programlama dillerinde (Perl/PHP/Python/Ruby/Lua vb.) bu tarz karmaşık veri tipleri bir alt seviyede "hash table" yapısı kullanılarak gerçeklenir. Şurada C# üzerinden gayet açıklayıcı bir anlatım yapılmış.

http://ertan.rdgnetwork.org/hashtable_nedir (http://ertan.rdgnetwork.org/hashtable_nedir)

"Hash table" wikipedia bağlantısı:

https://en.wikipedia.org/wiki/Hash_table (https://en.wikipedia.org/wiki/Hash_table)

"Hash table" yapısı PHP 'de veri tipleri gerçeklenirken ne şekilde kullanılmış -- şu bağlantıdaki kaynak kodlara göz atabilirsin:

https://github.com/php/php-src/tree/795a4c1bb384a7e0d56705d43e95b9bfcc3265b5/Zend (https://github.com/php/php-src/tree/795a4c1bb384a7e0d56705d43e95b9bfcc3265b5/Zend)