Uzman Cevap beta aşamasından çıkmaya hazırlanıyor! Yenilikleri takipte kalın.

Fonksiyonu degisken.fonksiyon() şeklinde kullanım nasıl oluyor?

Herkese merhaba.

Orta düzey php bilgisine sahibim. Php de fonksiyonlar fonksiyon() şeklinde kullanılır. Eğer bir sınıf içerisinden fonksiyon kullanacak isek nesne.fonksiyon() şeklinde çağırıyoruz.

Mesela bazı dillerde(python, c# vs) fonksiyonlar direk degisken.fonksiyon() şeklinde kullanılıyor. Bunun mantığı nedir?
Cevaplar (5)
0
statik fonksiyonları soruyorsun sanırım. C#'ta da PHP'de de var. Statik fonksiyonlar, class'ın bir örneğini oluşturmadan çağırılabilirler. Örnek oluşturmadan çalıştırıldıkları için bu fonksiyonlarda $this kullanılamaz. Ben C# üzerinden örnek verebilirim:
public class Sinif {
    public string degisken1;
    public Sinif() { this.degisken1 = "Emre"; } // kurucu metot
    public string metot1() { return "Metot 1 çalıştı" + this.degisken1 + " Bey"; }
    public static string metot2() { return "Metot 2 çalıştı"; }
}

Burada Sinif adlı class'ımda metot2() fonksiyonu statik olarak tanımlandığı için nesne.fonksiyon() şeklinde kullanılabilir. Ama metot1() fonksiyonu degisken.fonksiyon() şeklinde kullanılır.
Yani nesne.fonksiyon() şeklinde kullanılan fonksiyonlar statik tanımlanmış fonksiyonlardır ve statik fonksiyonlar çalıştıracağınız zaman class'tan bir nesne oluşturmazsınız.
degisken.fonksiyon() şeklinde kullanılan fonksiyonları çalıştırmak için ise class'ın bir örneği oluşturulmalıdır. Bunlar oluşturulan örneğe özel değişkenler saklarlar. Bu yüzden this kullanımı mümkündür. Örnek kullanım olarak:
string calisan = Sinif.metot2(); 
// metot2() statik bir fonksiyon olduğu için direkt olarak kullanabildim.

string calisan = Sinif.metot1();
// Hata alırız çünkü metot1 statik bir tanımlamaya sahip değil.

Sinif ornek1 = new Sinif();
Sinif ornek2 = new Sinif();
ornek1.degisken1 = "Emre";
ornek2.degisken1 = "Sedat";
string calisan1 = ornek1.metot1();
// calisan1 string'inin içinde şu an "Metot 1 çalıştı Emre Bey" bulunuyor.
string calisan2 = ornek1.metot1();
// calisan2 string'inin içinde şu an "Metot 1 çalıştı Sedat Bey" bulunuyor.


Açıklayıcı olmadıysa da araştırman için fikir verecektir diye umuyorum.
İyi günler...
0
Benim dediğim galiba bu değil. Kastettiğim durumda fonksiyonları biz yazmıyoruz.
0
Sen daha ne istediğini düzgün bir şekilde anlatamamışsın ki. Ya da en azından ben anlayamadım.
0
Söylemek istediğin böyle bir şey mi?

import datetime

print datetime.datetime.now().hour
0
@Ali GÖREN aynen bunun gibi birşeydi, php'de olmaz heralde.. Nesne tabanlı dillerde oluyor galiba
Cevap Yazın..

[code=css,php,sql,asp..]..kod..[/code] , [url=http:...com] , [img=resim linki]
[color=renk kodu]..yazı..[/color]

yabancı dizi izle tv ünitesi