Ne zaman bir PHP sınıfı değişkenleri bildirmek gerekir?

5 Cevap php

Ben OOP paradigması yeniyim, bu nedenle bu soru için basit bir açıklama muhtemelen var ...

Her zaman bir sınıf kamu nesne çapında değişkenleri bildirmek gerekir mi? Örneğin:

<?php

class TestClass
{
    var $declaredVar;

    function __construct()
    {
        $this->declaredVar = "I am a declared variable.";
        $this->undeclaredVar = "I wasn't declared, but I still work.";
    }

    function display()
    {
        echo $this->declaredVar . "<br />";
        echo $this->undeclaredVar;
        echo "<br /><br />"; 
    }
}

$test = new TestClass;
$test->display();

$test->declaredVar = "The declared variable was changed.";
$test->undeclaredVar = "The undeclared variable was changed.";

$test->display();

?>

Bu kodda, olsa bile $declaredVar sadece ilan değişken, $undeclaredVar gibi erişilebilir ve kullanılabilir olduğunu - ben halk olarak ilan sanki hareket gibi görünüyor.

Bildirilmemiş sınıf değişkenleri her zaman ki gibi erişilebilir iseniz, ön hepsini bildirmek ne anlamı var?

5 Cevap

Bu değişken sadece bildirilmemiş oluyor, başlatılmamış değildir.

Declaring variables in a class definition is a point of style for readability. Plus you can set accessibility (private or public).

Neyse, değişkenleri bildirmek açıkça OOP ile ilgisi yoktur, bu programlama dili özgü bulunuyor. Değişkenler açıkça bildirilmesi gerekir, çünkü Java'da bunu yapamam.

Eğer sınıf içinde bir üye bildirirseniz onun erişilebilirlik örneğin ayarlayabilirsiniz

private $varname;

Her zaman üye değişkenleri bildirmek ve sınıflar içindeki erişilebilirlik belirtmelidir. Benim fonksiyonları sonra sınıfın sonunda bu bilgileri koymak istiyorum.

Sen en kısa sürede bunu yapmak için yeterli bilgiye sahip olarak onları tanımlamak gerekir. Muhtemelen yapıcısı veya setter fonksiyonlar.

Bu kod ile çalışan insanlar için hayatı çok daha kolay hale getirir, çünkü bunu yapmak için önemli. Onlar orada konum neden farklı özellikler geliyor ya da nerede tahmin etmek zorunda değilsiniz. Eğer bir yerde bunları ilan ettik sürece Ayrıca, çoğu (hepsi değilse de) IDE sınıf değişkenler açmıyorum. Kod tamamlama / ipuçları IDE birçok faydası vardır ve değişkenleri bildirmek olmadan, bu işlevsellik işe yaramaz hale getirecektir.

Kapsülleme genel OOP paradigma onlar size bunun faydalanmak kodunu değiştirmek için gerek kalmadan kendi sınıfının bir uygulama değiştirmenize olanak sağlayan, özel olması gerektiği anlamına gelir tarafını iç durum değişkenlerini dışarı maruz gerektiğini söylüyor. Bu kurucular ve alıcılar ve sınıfının belirleyiciler yöntemi ile değişkenlerini başlatmak için iyi bir uygulamadır.

Genel değişkenler kısa sürede düzgün yapmak için yeterli bilgi sahip olarak başlatılmış olmalıdır.

Bir sınıf değişkeni makul başlatılması için bazı bilgi ihtiyacı varsa o bilgi kurucusuna aktarılan edilmelidir.

Örtülü tanımı noktasında değişkenleri bildirmek için PHP'nin sözdizimi kullanarak IMHO, hataları tanıtmak için bir SureFire yoludur - sınıf bir değişken daha sonra ilan ve OOP seni tanıyor gizleme tüm bilgileri kullanmanız gerekiyorsa.